我有以下代码:
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位置。我该怎么做?
答案 0 :(得分:3)
没有简单的方法来获取这些数据。 OpenGL主要关注绘图,你通常不需要那些数据,它仍然可以正常绘制。需要这些数据的应用程序通常会自行完成数学计算。
您必须手动为每个顶点进行变换。为此,将每个顶点与模型视图矩阵相乘。如果您不知道modelview矩阵(需要执行此计算的程序通常会缓存该值),您可以使用glGetFloatv(GL_MODELVIEW_MATRIX)
进行查询。
或者,如果您的OpenGL版本至少为3.0或支持EXT_transform_feedback,则可以使用转换反馈。这将要求您创建并绑定缓冲区,将顶点位置设置为反馈变化,并调用开始/结束变换反馈。最后,您必须映射缓冲区以获取数据 变换反馈更多的设置,但让你不必自己做数学。