我正在尝试使用alpha渲染带有alpha的帧缓冲区的纹理。我需要纹理的透明度由它自己的alpha和已经渲染到帧缓冲区的alpha组合控制。
即:
正常透明度:
(src_colour * src_alpha)+(dst_colour * 1-src_alpha)
必要的透明度:
(src_colour * src_alpha * dst_alphe)+(dst_colour * 1-(src_alpha * dst_alpha))
任何人都可以知道如何做到这一点吗?
我现在已经工作了9个小时: - )
我在Android上使用OpenGL 1.0和GL11ExtensionPack,所以我可以访问glBlendFunc和glBlendFuncSeparate。我不想使用着色器去GLES20路由,因为这需要重写很多代码。
谢谢, 安德鲁
答案 0 :(得分:1)
这是我用过的解决方案:
这会产生仅在前景对象上出现的阴影效果。有效地,alpha缓冲区变为具有可变不透明度的模板缓冲区。
幸运的是,我的背景物体没有透明度,就好像它们一样,我不认为没有任何方法可以在不使用着色器的情况下实现这种效果。