我正在使用当前上下文的深度缓冲区来影响我正在显示的纹理。纹理是一维的并且是灰度的。从左到右代表从近到远。某个深度处的像素越多,该点的纹理越亮,黑色表示没有像素处于该深度,白色表示所有像素都处于该深度。
现在我有一个glReadPixels()
在深度缓冲区上执行的解决方案,在 CPU 上对其进行分析,然后将其写回纹理。这自然是应用程序中的真正瓶颈。
我正在寻找一个全 GPU 解决方案,其中深度缓冲区在着色器或类似的东西中进行分析,并以这种方式更新纹理。我考虑过创建一个片段着色器来读取深度值并增加到纹理中的相应像素,但这需要片段着色器可以写入其他纹理。我已经学会了禁止的东西,特别是如果他们必须写入同一个像素。
是否有我遗漏的技巧或技术,或者我是否被迫让 CPU 参与其中?