查看: 1364|回复: 1

multipass的问题,请指教?

[复制链接]

该用户从未签到

发表于 2011-10-13 16:49:11 | 显示全部楼层 |阅读模式
我继承osgFx写了1个multipass的程序,多纹理混合,
(为了简化描述,假设1个pass里仅仅就1个基本纹理和1个alpha纹理),两个pass
一样基本就是:
pass1 & pass2每个pass挂了一个shader,下面代码只关键部分)

"texel0 = texture2D(tex, texcoord[0]);\n"
"texelm = texture2D(texMask, texcoord[1]);\n"
"texel = mix( gl_FragColor, texel0, texelm.x);\n"
"gl_FragColor = texel; \n"


然后在define_passes()里分别两次addpass(...);

期望的结果,是第2pass后,能将2个基本纹理以设置的alpha混合起来,可是实际
结果是仅仅只能看到1次的结果,我如果关闭其中任何1个pass(少addPass1次),
可以看到每次的结果都是正确的,但只要一起执行就有问题。

我的想法是: gl_FragColor应该代表当前framebuffer的颜色,所以每个pass
我都和上个gl_FragColor去混合(是不是这我理解有误区??)

我反复测试狠多遍,感觉gl_FragColor无论在那个pass里,初始化的值好像都是
vec4(0.0,0.0,0.0,0.0), 请问,我怎么在第2pass里拿第一的结果值呢?还是
我哪地方理解有误?

请指教,谢谢。

该用户从未签到

发表于 2011-10-18 10:08:10 | 显示全部楼层
gl_FragColor应该代表当前framebuffer的颜色
这显然是臆想了,如果您想要混合两次的结果,应该考虑Blend的方式
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表