新乞丐王子
自称:Sir注册于:2006年8月9日 等级:注册会员 帖子数:66 积分:447 阅读权限:20 | |
你好,又要来麻烦你了! \N我想在DX里面让一个纹理不包括ALPHA值的模型半透明,并且可以调整透明度! \N我修改了无数搭配的 \ND3DDevice.SetRenderState \N可是最好的结果也就是能够半透明但不能够调整透明度! \N我在创建模型的时候也改过 材质的 diffuse.a * 0.2; 等 \N但根本就没有反应! \N你能不能帮我写一段最简单的让无ALPHA模型半透明并且可以调整透明度的代码? \N就是完成上述功能时初始化那块的正确配置代码! \N这个对我很重要,谢谢了!
|
我爱游戏,我爱编程! |
|
| 🗓2006-12-22 13:10(约17年前) 👁1923 |
|
|
Jeminai
自称:雙子騎士注册于:2005年5月26日 等级:站长 帖子数:6428 积分:41808 阅读权限:200 | |
这个不麻烦的,你修改的时候最好是材质的Diffuse.a和Ambient.a一起改试试。
|
我的Blog网址:blog.geminight.com |
|
|
|
新乞丐王子
自称:Sir注册于:2006年8月9日 等级:注册会员 帖子数:66 积分:447 阅读权限:20 | |
我建纹理的时候是先改完Diffuse.a再 材质的Ambient=Diffuse的啊!
|
我爱游戏,我爱编程! |
|
|
|
Jeminai
自称:雙子騎士注册于:2005年5月26日 等级:站长 帖子数:6428 积分:41808 阅读权限:200 | |
如下这个没错吧? \Ng_d3ddevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE ); g_d3ddevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE ); g_d3ddevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); \Ng_d3ddevice->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_DISABLE); \N实在不行你把你的这部分代码贴出来看看有没有问题。
|
我的Blog网址:blog.geminight.com |
|
|
|
新乞丐王子
自称:Sir注册于:2006年8月9日 等级:注册会员 帖子数:66 积分:447 阅读权限:20 | |
我没有你的第四句,g_d3ddevice->SetTextureStageState( 1, D3DTSS_ALPHAOP, D3DTOP_DISABLE); \N不过加上了之后也没什么反应! \N除此之外我还写的代码只有 \ND3DDevice.SetRenderState(D3DRS_ALPHABLENDENABLE, 1); \ND3DDevice.SetRenderState(D3DRS_ALPHATESTENABLE, 1); \ND3DDevice.SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR); \ND3DDevice.SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR); \N现在这样写完显示的结果是半透明颜色反显, \N而且我还是不知道在哪能调节半透明度!
|
我爱游戏,我爱编程! |
|
|
|
Jeminai
自称:雙子騎士注册于:2005年5月26日 等级:站长 帖子数:6428 积分:41808 阅读权限:200 | |
[em06],你应该改成。 \ND3DDevice.SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); \ND3DDevice.SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
|
我的Blog网址:blog.geminight.com |
|
|
|
新乞丐王子
自称:Sir注册于:2006年8月9日 等级:注册会员 帖子数:66 积分:447 阅读权限:20 | |
这两句我也改了许多遍了,改完了就变成镂空效果而不是半透明了!
|
我爱游戏,我爱编程! |
|
|
|
Jeminai
自称:雙子騎士注册于:2005年5月26日 等级:站长 帖子数:6428 积分:41808 阅读权限:200 | |
截个图看看。
|
我的Blog网址:blog.geminight.com |
|
|
|
新乞丐王子
自称:Sir注册于:2006年8月9日 等级:注册会员 帖子数:66 积分:447 阅读权限:20 | |
|
|
|
Jeminai
自称:雙子騎士注册于:2005年5月26日 等级:站长 帖子数:6428 积分:41808 阅读权限:200 | |
哦,明白了,折腾了半天。[em08] \N多边形排序的问题,把需要透明的多边形排到后面渲染就OK了。
|
我的Blog网址:blog.geminight.com |
|
|
|
新乞丐王子
自称:Sir注册于:2006年8月9日 等级:注册会员 帖子数:66 积分:447 阅读权限:20 | |
哎呀,哎呀,我说半天白说了!!! \N我需要一个模型整体的半透明(能调节的),不需要镂空! \N我整个程序中就只有这一个模型! \N而且这个模型是用Mesh.DrawSubset来渲染的! \N你在你那里写一段成功的程序试试行了之后发给我行嘛? \N最多就一个EXE,一个CPP,200行以内代码,帮我写一个拜托了!
|
我爱游戏,我爱编程! |
|
|
|
Jeminai
自称:雙子騎士注册于:2005年5月26日 等级:站长 帖子数:6428 积分:41808 阅读权限:200 | |
我的意思是模型必须拆成两部分:不透明部分(脸、身体),透明色部分(头发、胸花)。 \N你先渲染“不透明部分”再渲染“透明色部分”,再用我说的“D3DBLEND_SRCALPHA,D3DBLEND_INVSRCALPHA”混合方法问题肯定能解决。 \N问题不是出在程序上,你第2张截图已经证明了你程序设置上没错,问题只是把背景作为了融合色。还有你那个“D3DDevice.SetRenderState(D3DRS_ALPHATESTENABLE, 1);”最好先别用了,改为((D3DRS_ALPHATESTENABLE, 0))。 源代码你可以参考DXSDK里的BillBoard。
|
我的Blog网址:blog.geminight.com |
|
|