OpenGL - 如果是alpha,不要写深度

时间:2013-10-05 15:59:12

标签: c++ opengl mask alpha depth

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

时出现

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

有什么想法吗?

@UPDATE: 示例:我有一些OpenGL渲染的UI图像。他们中的一些人在角落里有阿尔法。 在场景渲染中,我有“深度预通过”以通过不计算它们上的光来节省一些像素。 我想要将UI图像添加到预处理 - 但只有完全不透明的像素(alpha = 1.0)。

1 个答案:

答案 0 :(得分:0)

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