在只接触深度缓冲区的 openGL 中进行绘制调用
Make draw call in openGL that ONLY touches the depth buffer
我不希望将深度缓冲区渲染到纹理,或查询它的阴影或类似的东西 - 我希望本质上制作一个渲染通道,它只是用一些数据预填充深度缓冲区在我将利用其内容的其他绘制调用之前。但是,我不希望此 "fill the depth buffer" 传递写入颜色缓冲区。
我使用的是 OpenGL 2.1(或 OpenGL ES 2),具有非固定管道内容。
您只能在颜色掩码设置为全假的情况下渲染到深度缓冲区。
仅深度渲染通道在某些情况下并不少见。
您可以在 GL 中通过屏蔽对颜色缓冲区的所有写入来实现这一点:glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE)
。 (如果您使用模板等其他缓冲区,它们也有单独的掩码。)
另一种选择是只设置 glDrawBuffer(GL_NONE)
,但是,这在 GLES 2 中不可用。
我不希望将深度缓冲区渲染到纹理,或查询它的阴影或类似的东西 - 我希望本质上制作一个渲染通道,它只是用一些数据预填充深度缓冲区在我将利用其内容的其他绘制调用之前。但是,我不希望此 "fill the depth buffer" 传递写入颜色缓冲区。
我使用的是 OpenGL 2.1(或 OpenGL ES 2),具有非固定管道内容。
您只能在颜色掩码设置为全假的情况下渲染到深度缓冲区。
仅深度渲染通道在某些情况下并不少见。
您可以在 GL 中通过屏蔽对颜色缓冲区的所有写入来实现这一点:glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE)
。 (如果您使用模板等其他缓冲区,它们也有单独的掩码。)
另一种选择是只设置 glDrawBuffer(GL_NONE)
,但是,这在 GLES 2 中不可用。