Opengl es 检索顶点坐标

Opengl es 检索顶点坐标,opengl-es,coordinates,vertex,Opengl Es,Coordinates,Vertex,我的问题是: 有没有办法在平移或旋转后检索顶点的坐标 示例:x=10,y=10,z=0 在对glTranslate或glRotate进行一系列调用后,我如何知道x、y和z的实际状态 谢谢。这是不可能的。。。opengl将顶点数据发送到GPU,只有在GPU上,才能在转换后获得它们 要获得变换的顶点,您必须自己将它们与矩阵相乘 for each vertex: vertex_transformed = matrix * vertex 在旧的OpenGL中: glGetFloatv(GL_MO

我的问题是:

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

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

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


谢谢。

这是不可能的。。。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上)。

这是不可能的。。。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上)。

确定,但。。转换后,如何使用gl方法检索矩阵?和。。矩阵(float[16])和顶点相乘的数学是什么。。。对于转换反馈,我如何创建此缓冲区来存储进度?没问题:)转换反馈更高级一些。。。我需要更多的经验,所以我现在无法向你解释。好的,但是。。转换后,如何使用gl方法检索矩阵?和。。矩阵(float[16])和顶点相乘的数学是什么。。。对于转换反馈,我如何创建此缓冲区来存储进度?没问题:)转换反馈更高级一些。。。我需要更多的这方面的经验,所以我现在无法向你解释