GEMINIGHT 警告:您的浏览器不支持JavaScript将无法正常浏览!
Warning: Your browser does not support JavaScript!
📋注册(Register) | 📛登录(Login)
🎲

主站(Home) »  论坛(Forum)  » 程序编写(Program)
新乞丐王子

自称:Sir
注册于:2006年8月9日
等级:注册会员
帖子数:66
积分:447
阅读权限:20
帮忙啊_模型的半透明 1楼

你好,又要来麻烦你了!

\N

我想在DX里面让一个纹理不包括ALPHA值的模型半透明,并且可以调整透明度!

\N

我修改了无数搭配的

\N

D3DDevice.SetRenderState

\N

可是最好的结果也就是能够半透明但不能够调整透明度!

\N

我在创建模型的时候也改过 材质的 diffuse.a * 0.2; 等

\N

但根本就没有反应!

\N

你能不能帮我写一段最简单的让无ALPHA模型半透明并且可以调整透明度的代码?

\N

就是完成上述功能时初始化那块的正确配置代码!

\N

这个对我很重要,谢谢了!

SIGNATURE
我爱游戏,我爱编程!
🗓2006-12-22 13:10(约17年前)  👁1923
Jeminai

自称:雙子騎士
注册于:2005年5月26日
等级:站长
帖子数:6428
积分:41808
阅读权限:200
2楼
这个不麻烦的,你修改的时候最好是材质的Diffuse.a和Ambient.a一起改试试。
SIGNATURE
我的Blog网址:blog.geminight.com
🗓2006-12-22 15:54(约17年前)
新乞丐王子

自称:Sir
注册于:2006年8月9日
等级:注册会员
帖子数:66
积分:447
阅读权限:20
3楼

我建纹理的时候是先改完Diffuse.a再 材质的Ambient=Diffuse的啊!

SIGNATURE
我爱游戏,我爱编程!
🗓2006-12-22 17:27(约17年前)
Jeminai

自称:雙子騎士
注册于:2005年5月26日
等级:站长
帖子数:6428
积分:41808
阅读权限:200
4楼

如下这个没错吧?

\N

g_d3ddevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
g_d3ddevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
g_d3ddevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);

\N

g_d3ddevice->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_DISABLE);

\N

实在不行你把你的这部分代码贴出来看看有没有问题。

SIGNATURE
我的Blog网址:blog.geminight.com
🗓2006-12-22 18:51(约17年前)
新乞丐王子

自称:Sir
注册于:2006年8月9日
等级:注册会员
帖子数:66
积分:447
阅读权限:20
5楼

我没有你的第四句,g_d3ddevice->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_DISABLE);

\N

不过加上了之后也没什么反应!

\N

除此之外我还写的代码只有

\N

D3DDevice.SetRenderState(D3DRS_ALPHABLENDENABLE, 1);

\N

D3DDevice.SetRenderState(D3DRS_ALPHATESTENABLE, 1);

\N

D3DDevice.SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);

\N

D3DDevice.SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);

\N

现在这样写完显示的结果是半透明颜色反显,

\N

而且我还是不知道在哪能调节半透明度!

SIGNATURE
我爱游戏,我爱编程!
🗓2006-12-22 20:51(约17年前)
Jeminai

自称:雙子騎士
注册于:2005年5月26日
等级:站长
帖子数:6428
积分:41808
阅读权限:200
6楼

[em06],你应该改成。

\N

D3DDevice.SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);

\N

D3DDevice.SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

SIGNATURE
我的Blog网址:blog.geminight.com
🗓2006-12-23 08:50(约17年前)
新乞丐王子

自称:Sir
注册于:2006年8月9日
等级:注册会员
帖子数:66
积分:447
阅读权限:20
7楼

这两句我也改了许多遍了,改完了就变成镂空效果而不是半透明了!

SIGNATURE
我爱游戏,我爱编程!
🗓2006-12-23 10:26(约17年前)
Jeminai

自称:雙子騎士
注册于:2005年5月26日
等级:站长
帖子数:6428
积分:41808
阅读权限:200
8楼
截个图看看。
SIGNATURE
我的Blog网址:blog.geminight.com
🗓2006-12-23 11:11(约17年前)
新乞丐王子

自称:Sir
注册于:2006年8月9日
等级:注册会员
帖子数:66
积分:447
阅读权限:20
9楼

D3DBLEND_SRCCOLOR 的结果,是半透明成这个样子...

\N

http://www.geminight.com/upload/upfile/File-20061223-1436-93.jpg

\N

D3DBLEND_SRCALPHA 的结果,是镂空成这个样子...

\N

http://www.geminight.com/upload/upfile/File-20061223-1435-67.jpg

SIGNATURE
我爱游戏,我爱编程!
🗓2006-12-23 14:45(约17年前)
Jeminai

自称:雙子騎士
注册于:2005年5月26日
等级:站长
帖子数:6428
积分:41808
阅读权限:200
10楼

哦,明白了,折腾了半天。[em08]

\N

多边形排序的问题,把需要透明的多边形排到后面渲染就OK了。

SIGNATURE
我的Blog网址:blog.geminight.com
🗓2006-12-23 15:11(约17年前)
新乞丐王子

自称:Sir
注册于:2006年8月9日
等级:注册会员
帖子数:66
积分:447
阅读权限:20
11楼

哎呀,哎呀,我说半天白说了!!!

\N

我需要一个模型整体的半透明(能调节的),不需要镂空!

\N

我整个程序中就只有这一个模型!

\N

而且这个模型是用Mesh.DrawSubset来渲染的!

\N

你在你那里写一段成功的程序试试行了之后发给我行嘛?

\N

最多就一个EXE,一个CPP,200行以内代码,帮我写一个拜托了!

SIGNATURE
我爱游戏,我爱编程!
🗓2006-12-23 16:26(约17年前)
Jeminai

自称:雙子騎士
注册于:2005年5月26日
等级:站长
帖子数:6428
积分:41808
阅读权限:200
12楼

我的意思是模型必须拆成两部分:不透明部分(脸、身体),透明色部分(头发、胸花)。

\N

你先渲染“不透明部分”再渲染“透明色部分”,再用我说的“D3DBLEND_SRCALPHA,D3DBLEND_INVSRCALPHA”混合方法问题肯定能解决。

\N

问题不是出在程序上,你第2张截图已经证明了你程序设置上没错,问题只是把背景作为了融合色。还有你那个“D3DDevice.SetRenderState(D3DRS_ALPHATESTENABLE, 1);”最好先别用了,改为((D3DRS_ALPHATESTENABLE, 0))。
源代码你可以参考DXSDK里的BillBoard。

SIGNATURE
我的Blog网址:blog.geminight.com
🗓2006-12-23 16:57(约17年前)

标题(Title):
关键字标签(Tags):
路人:回贴可以不必登录