2

我想在 OpenGL 中使用 C++ 和 GLSL 做什么:当纹理具有 alpha (texture.a! = 1.0;) 时,该像素不会写入深度缓冲区。(对于颜色缓冲区,它被写入)写入深度仅在像素纹理时发生。a == 1.0;

在着色器中丢弃不是解决方案 - 然后此像素不会写入颜色缓冲区。

有任何想法吗?

@UPDATE:示例:我有一些由 OpenGL 渲染的 UI 图像。他们中的一些人在角落里有阿尔法。在场景渲染中,我有“深度预通”来通过不计算光照来节省一些像素。我还想获得该预通的 UI 图像 - 但只是完全不透明的像素(alpha = 1.0)。

4

1 回答 1

0

正如Andon在评论中提到的:“当你写一个片段时,你总是必须写一个深度值,没有办法在着色器级别选择性地启用或禁用它。”

于 2016-04-13T21:47:19.643 回答