作者pleaselouis (LOUISN)
看板GameDesign
标题Re: [请益] 请问关於 Shader 的问题
时间Mon Aug 17 15:08:25 2009
1F:→ darkflier:两个effect 08/17 12:24
谢谢你的回覆 但是这也是我所苦恼的地方 我上一篇文章写的不清楚 请见谅
我苦恼的地方是 如果使用两个以上 effect
那他载入的回圈 要如何撰写??
一个effect时候的回圈如下 :
---
if (SUCCEEDED(g_pEffect->SetTechnique(hTechnique)))
{
if (SUCCEEDED(g_pEffect->Begin(&totalPasses, 0)))
{
for (UINT pass2 = 0; pass2 < totalPasses; ++pass2)
{
if (SUCCEEDED(g_pEffect->BeginPass(pass)))
{
g_pDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 12);
g_pEffect->EndPass();
}
}
g_pEffect->End();
}
}
---
应该不是单纯的执行上述回圈两次吧?? 因为我这样测试的结果
会让第二次的执行的 effect 覆盖第一次执行的结果 而不是同时执行两个结果
也试过用两个 effect 并使用下面的巢状回圈执行过 但是只有出现到第一个effect的效果
---
if (SUCCEEDED(g_pEffect2->SetTechnique(hTechnique2)))
{
if (SUCCEEDED(g_pEffect2->Begin(&totalPasses2, 0)))
{
for (UINT pass = 0; pass < totalPasses2; ++pass)
{
if (SUCCEEDED(g_pEffect2->BeginPass(pass)))
{
// Render the cube.
if (SUCCEEDED(g_pEffect->SetTechnique(hTechnique)))
{
if (SUCCEEDED(g_pEffect->Begin(&totalPasses, 0)))
{
for (UINT pass = 0; pass < totalPasses; ++pass)
{
if (SUCCEEDED(g_pEffect->BeginPass(pass)))
{
g_pDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 12);
g_pEffect->EndPass();
}
}
g_pEffect->End();
}
}
g_pEffect2->EndPass();
}
g_pEffect2->End();
}
}
}
---
我不知道上述的程式码 我是否哪边有搞错 不知可否请你指导一下 给一些提示
而且若使用上述的结构 那麽在必须 大量同时使用 Shader 时的情况下
难道就是使用 递回 的方式 写一个巢状回圈 不断的往内部执行吗??
不好意思 打了一长串的问题 不过还是请你多多帮忙 谢谢你的推文 谢谢你 <(_ _)>
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.76.190.21
2F:推 NDark:概念上是在目标场景render前把要用的shader装上. 08/17 15:16
3F:→ darkflier:首先呢你必须要做的是 08/17 15:36
4F:→ darkflier:\Samples\C++\Direct3D\PostProcess 08/17 15:37
5F:→ darkflier:把这个范例看完你就懂了 08/17 15:37
6F:→ darkflier:重点不是你有几个shader有几个effect 08/17 15:37
7F:→ darkflier:重点是你要用哪个effect 08/17 15:38
8F:→ darkflier:看来你不是很了解technique可以干什麽 08/17 15:39
9F:→ darkflier:并不是所有的technique都被需要使用 08/17 15:40
10F:→ darkflier:你可以只用你要的 即使不是同一个effect 08/17 15:40
11F:→ darkflier:只要输入的vertex format是相同的 就可以被使用 08/17 15:40
12F:→ darkflier:其实不同也可以啦 不过你现在应该不用考虑到那麽深 08/17 15:41
13F:→ pleaselouis:打完下面的文章 才看到楼上推文 囧 谢谢你 真是好范例 08/17 15:50
14F:推 darkflier:因为我今天翘班 所以现在很闲\(^▽^)/ 08/17 16:08
15F:→ pleaselouis:囧 某种意义上 还真羡慕... 08/17 16:24