0

我的问题是:

有没有办法在平移或旋转后检索顶点的坐标?

示例:x = 10,y = 10,z = 0

在对 glTranslate 或 glRotate 的一系列调用之后,我如何知道 x、y 和 z 的实际状态?

谢谢。

4

1 回答 1

4

这是不可能的...... opengl 将您的顶点数据发送到 GPU,并且只有在 GPU 上,您才能在转换后获取它们。

要获得变换的顶点,您必须自己将它们乘以矩阵

for each vertex:
   vertex_transformed = matrix * vertex

在旧的 OpenGL 中:

glGetFloatv(GL_MODELVIEW_MATRIX, m);
x = pos.x*m[0] + pos.y*m[4] + pos.z*m[8] + m[12];
y = pos.x*m[1] + pos.y*m[5] + pos.z*m[9] + m[13];
z = pos.x*m[2] + pos.y*m[6] + pos.z*m[10] + m[14];

一些更高级的方法是使用变换反馈并将这些变换的顶点存储到缓冲区中(但该缓冲区仍将存储在 GPU 上)。

于 2012-05-21T13:47:25.380 回答