是否可以从着色器获取数据

时间:2014-12-07 08:29:30

标签: c++ opengl glsl shader

我想要做的是在转换,旋转,缩放后获取顶点的Position,并在转换,旋转,缩放后获取Normal方向,然后将值传递给我的C ++应用程序,这可能吗?

1 个答案:

答案 0 :(得分:2)

可能是的,但最优雅的方法取决于可用的OpenGL版本配置文件。最优雅的解决方案是顶点变换反馈https://www.opengl.org/wiki/Transform_Feedback

如果您没有VTF,则必须将信息写入帧缓冲区(在片段缓冲区对象中)以进行回读(这当然会阻止您看到“图像”但只是为您提供颜色编码信息)。在GL_POINTS模式下渲染,使用gl_VertexID设置片段位置,将变换后的数据传递给片段着色器,让片段着色器将其写入正确的颜色通道。