如何将 Pixmap 中的数据写入 Framebuffer 的深度缓冲区?

4
我正在使用framebuffer的深度缓冲实现纹理遮罩,参照以下示例:https://github.com/mattdesl/lwjgl-basics/wiki/LibGDX-Masking#masking-with-depth-buffer。我已经通过修改深度缓冲区来使形状渲染器正常工作,但现在我希望使用Pixmap修改深度缓冲区。我需要将Pixmap中的所有非不透明像素写入深度缓冲区作为1.0深度值,将所有不透明像素作为0.0深度值。

我看到了使用ShapeRenderer单独绘制Pixmap中的像素的解决方案,但这似乎效率不高。是否有更合适且更高效的方法?


1
看起来非常简单。将深度缓冲区清除为1.0,绘制一个全屏四边形,在深度0.0(换句话说,近平面)应用您的像素图作为纹理,然后应用alpha测试:EQUAL 1.0。如果这是现代GL,则必须使用片段着色器来完成此操作,因此类似于if (tex.a!= 1.0) discard; - Andon M. Coleman
1个回答

0

我们可以通过以下代码轻松将纹理绘制到FrameBuffer中:

Texture myTex = new Texture(Pixmap pixmap);

不是吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接