2011-04-08 73 views
0

我有一段代码的当前顶点位置,这是以下几点:如何检索三角形

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); 

我想知道每次转换之后的每个顶点位置。我将如何做到这一点?

回答

3

有没有简单的方法来获得这些数据。 OpenGL主要关注绘图,而你通常不需要这些数据,它仍然会画好。需要这些数据的应用程序通常自己进行数学运算。

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

或者,如果您的OpenGL版本至少为3.0或支持EXT_transform_feedback,则可以使用变换反馈。这将要求您创建并绑定缓冲区,将顶点位置设置为反馈变化,并调用开始/结束变换反馈。最后,您必须映射缓冲区才能恢复数据。
转换反馈的设置更多,但是可以避免您自己进行数学运算。