我正在使用当前上下文的深度缓冲区来影响我正在显示的纹理。该纹理为一维灰度图像,从左到右表示从近到远。在某个深度处有更多像素,则该点的纹理越亮,黑色表示不存在该深度的像素,白色表示所有像素都存在于该深度。
现在我有一个解决方案,对深度缓冲区进行
我正在寻找一个全GPU解决方案,其中深度缓冲区在着色器或类似方法中进行分析并更新纹理。我考虑创建一个片段着色器,读取深度值并增加到纹理中对应的像素位置,但这需要片段着色器能够写入其他纹理。我了解到这是不可行的,特别是如果它们必须写入相同的像素。
是否有我错过的技巧或技术,或者我必须涉及CPU?
现在我有一个解决方案,对深度缓冲区进行
glReadPixels()
,在CPU上进行分析,然后将其写回到纹理中。自然地,这是应用程序中的真正瓶颈。我正在寻找一个全GPU解决方案,其中深度缓冲区在着色器或类似方法中进行分析并更新纹理。我考虑创建一个片段着色器,读取深度值并增加到纹理中对应的像素位置,但这需要片段着色器能够写入其他纹理。我了解到这是不可行的,特别是如果它们必须写入相同的像素。
是否有我错过的技巧或技术,或者我必须涉及CPU?