作者pleaselouis (LOUISN)
看板GameDesign
标题Re: [请益] 请问关於 Ogre 材质 透明色 设定
时间Fri Mar 6 16:02:30 2009
大家好 小弟因最近工作较忙 所以比较少上来 这次关於此主题又有问题向大家请教
请各位前辈 帮帮忙 给在下一些帮助 谢谢大家 <(_ _)>
小弟我目前已经可以做到 透明色处理的功能 但是还有些异常问题发生
目前我针对一个 树 的模组做载入显示 其中分别对 setDepthWriteEnabled() 作测试
这是将参数设为 False 的情况 :
http://0rz.tw/FbpI1
而这是将参数设为 True 的情况 :
http://0rz.tw/Em40q
首先讨论关於 True 的图片 可以看见 每一片树叶模组 会以底色 盖住下面或後面的模组
原本希望的正常显示画面 应该是可以从 树叶的缝隙中 看到其他树叶或是枝干
但却完全被其底色所干扰 要是应用到人物的头发上 後果应该会蛮惨的...
以下是相关程式码 :
Entity * EtTemp;
EtTemp->getSubEntity(mTextureSubMeshIndex)->getMaterial()->getTechnique(0)
->getPass(0)->setSceneBlending(Ogre::SBF_SOURCE_ALPHA,
Ogre::SBF_ONE_MINUS_SOURCE_ALPHA);
EtTemp->getSubEntity(mTextureSubMeshIndex)->getMaterial()->getTechnique(0)
->getPass(0)->setDepthWriteEnabled(true);
再来讨论关於 False 的图片 底色盖住下面或後面的模组 略为减缓 但还是有出现
但由於参数为False 故对於 Depth 的判断关闭了 所以可以看到应该在比较後面的树叶
整块的显示在比较前面的位置 甚至是盖住了前面的树叶...
以下是相关程式码 :
Entity * EtTemp;
EtTemp->getSubEntity(mTextureSubMeshIndex)->getMaterial()->getTechnique(0)
->getPass(0)->setSceneBlending(Ogre::SBT_REPLACE);
EtTemp->getSubEntity(mTextureSubMeshIndex)->getMaterial()->getTechnique(0)
->getPass(0)->setDepthWriteEnabled(false);
目前对於这样的错误 几乎没有头绪该如何解决
希望版上的前辈 可以再度指导一下晚辈 谢谢大家 <(_ _)>
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.76.190.21
※ 编辑: pleaselouis 来自: 211.76.190.21 (03/06 16:03)
1F:→ Transformers:在Shader里把AlphaTestEnable设定为true 03/06 16:08
2F:→ pleaselouis:对不起 可以再给多一点关键字 我找不太到相关文件 03/06 16:15
※ 编辑: pleaselouis 来自: 211.76.190.21 (03/06 16:22)
※ 编辑: pleaselouis 来自: 211.76.190.21 (03/06 16:24)
3F:→ Transformers:DirectX 是 EnableAutoDepthStencil "深度测试" 03/06 16:24
4F:→ Transformers:应该有类似的关键字 03/06 16:24
5F:→ pleaselouis:请问这是针对Ogre的关键字 还是原理文件方面的呢 ?? 03/06 16:30
6F:→ pleaselouis:查了一下 好像是针对 DirectX 的 谢谢你 希望有用 <囧 03/06 16:34