我的问题是:
有没有办法在翻译或旋转后检索顶点的坐标?
示例:x = 10,y = 10,z = 0
在对glTranslate或glRotate进行一系列调用后,我如何知道x,y和z的实际状态?
感谢。
答案 0 :(得分:3)
这是不可能的...... 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上)。