我想使用 C++ 和 GLSL 在 OpenGL 中做什么:
当纹理具有 alpha (texture.a! = 1.0;) 时,该像素不会写入深度缓冲区。 (对于颜色缓冲区,它是这样写的)
仅当像素texture.a == 1.0时才会发生写入深度;
在着色器中丢弃不是解决方案 - 那么该像素不会写入颜色缓冲区。
有任何想法吗?
@更新:
示例:我有一些由 OpenGL 渲染的 UI 图像。其中一些在角落里有阿尔法。
在场景渲染中,我有“深度预通道”来通过不计算像素上的光来保存一些像素。
我还想将 UI 图像获取到该预通道 - 但只有完全不透明的像素(alpha = 1.0)。
正如评论中提到的Andon https://stackoverflow.com/users/2423205/andon-m-coleman:“在编写片段时,您始终必须编写深度值,无法在着色器级别有选择地启用或禁用它。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)