保证不对整数纹理进行抗锯齿渲染

时间:2018-03-24 07:32:47

标签: picking webgl2

对于WebGL 2画布,我需要一个简单的“拾取”系统,即在2D中给出一个点 p ,系统可以告诉哪个对象(如果有的话)被渲染到 p 即可。 (我不需要CPU中的选择结果,只需要在着色器中。)

为了实现这一点,每个对象将使用与专用于拾取的帧缓冲区不同的“颜色ID”进行渲染。我正在考虑使用R16UI或R32UI纹理格式和GL_NEAREST过滤。我关心的是抗锯齿:我如何保证对象的边缘不会出现消除锯齿,从而改变输出值,并破坏拾取系统?

我正在寻找禁用抗锯齿的代码,以及对那些了解标准的人的解释。

1 个答案:

答案 0 :(得分:1)

WebGL(和OpenGL ES)不以任何自动方式对抗帧缓冲区。帧缓冲器的抗锯齿是手动操作。在WebGL1中,你根本无法对帧缓冲器进行抗锯齿处理。在WebGL2中,您将创建一个多重采样渲染缓冲区。所以基本上如果你不创建多重采样渲染缓冲区,你就不会得到抗锯齿。

整数和无符号整数纹理也不可过滤,这意味着它们只支持gl.NEAREST

所以没有什么可以告诉你的。如果您使用R16UIR32UI纹理并对其进行渲染,它将按照您的希望工作。

相关问题