如何在深度缓冲区中获取先前的值?

时间:2012-05-30 11:39:14

标签: c++ opengl glsl depth-buffer

我怎样才能做下一个算法? :

if(Color.a < 0.9)
    gl_FragDepth = gl_PrevFragDepth;
else
    gl_FragDepth = gl_FragCoord.z;

我可以用 glDepthMask(false);,但它正在使用包含alpha < 1所有像素的多边形。如果多边形包含alpha = 1alpha < 1的像素,则表示渲染图片不正确。我需要这个来渲染文本掩码,它包含任何alpha值!

我无法使用深度纹理,因为我需要实时使用深度缓冲区!

1 个答案:

答案 0 :(得分:0)

  

我怎样才能做下一个算法? :

在OpenGL-4中,您可以使用片段着色器中的深度纹理写入来完成。但性能将会非常糟糕,因为GPU已针对集合访问进行了优化,而不是分散访问,而这正是您尝试做的事情。

使用OpenGL-3及以下版本,你无法做到。遗憾。