2012-05-21 89 views
0

我的问题是:检索顶点坐标

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

例如:X = 10,Y = 10,z = 0的

一系列调用glTranslate或glRotate后我怎样才能知道的x,y和z中的实际状态?

谢谢。

+0

可能重复的[openGL:得到坐标后glrotate](http://stackoverflow.com/questions/10543554/opengl-get-coordinates-after-a-glrotate) – CharlesB

回答

3

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

得到变换的顶点必须由矩阵对自己

for each vertex: 
    vertex_transformed = matrix * vertex 
老的Op​​enGL

乘他们:

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上)。

+0

好但是..我怎么能检索矩阵,转换后,使用gl方法?和..矩阵(float [16])和顶点相乘的算术是什么? ...对于变换反馈,我如何创建这个缓冲区来存储进度? – James

+0

非常感谢你! – James

+0

没问题:)变换反馈有点高级......我需要更多的经验,所以我现在无法向你解释。 – fen