我有一个从计算点位置的片段着色器更新的纹理。
阅读它的好方法是什么,以便可以将其绘制为原语?
答案 0 :(得分:1)
如果你想使用纹理中的数据进行绘制,那么回读主机内存是一种浪费而且速度很慢(但是为了参考,你可以使用glGetTexImage
或glReadPixels
)。
相反,您可以在不提供顶点位置的情况下绘制基元,并在顶点着色器中将其从纹理中读取(绑定为采样器并使用texelFetch
)。
texel fetch的坐标可以来自每个顶点属性(就像常规纹理坐标一样),或者您可以使用gl_VertexID
隐式计算它们。
正如@ColonelThirtyTwo所说,你也可以使用变换反馈。不使用纹理并在片段着色器中进行计算,而是将其替换为顶点着色器中的计算。这里通常内插到片段着色器的变量变量被打包并保存在缓冲区中,仍然在GPU上。