如何检索三角形的当前顶点位置

时间:2011-04-08 06:01:19

标签: opengl

我有以下代码:

 glRotatef(triangle_info.struct_triangle.rot, 0, 0, 1.);

 glEnableClientState(GL_VERTEX_ARRAY);

 glVertexPointer(2, GL_FLOAT, 0, trian_data_values);

 glDrawArrays(GL_TRIANGLES, 0, 3);

我想知道每次转换后的每个VERTEX位置。我该怎么做?

1 个答案:

答案 0 :(得分:3)

没有简单的方法来获取这些数据。 OpenGL主要关注绘图,你通常不需要那些数据,它仍然可以正常绘制。需要这些数据的应用程序通常会自行完成数学计算。

您必须手动为每个顶点进行变换。为此,将每个顶点与模型视图矩阵相乘。如果您不知道modelview矩阵(需要执行此计算的程序通常会缓存该值),您可以使用glGetFloatv(GL_MODELVIEW_MATRIX)进行查询。

或者,如果您的OpenGL版本至少为3.0或支持EXT_transform_feedback,则可以使用转换反馈。这将要求您创建并绑定缓冲区,将顶点位置设置为反馈变化,并调用开始/结束变换反馈。最后,您必须映射缓冲区以获取数据 变换反馈更多的设置,但让你不必自己做数学。