2010-02-18 232 views
0

我有一个转变在OpenGL设置如下:如何将转换后的坐标转换为OpenGL中的世界坐标?

glPushMatrix(); 
glTranslated(pntPos.X(), pntPos.Y(), pntPos.Z()); 
glRotated(dx, 1, 0, 0); 
glRotated(dy, 0, 1, 0); 
glRotated(dz, 0, 0, 1); 

//I use this to Render a freely placeable textbox in 3d 
//space which is based on the FTGL-Toolkit [1] (for TTF support). 

m_FTLayout.Render(m_wcCaption, m_iCaptionSize); 
glPopMatrix(); 

可正常工作。

但是,我想计算三维边界框,这将界定我的文字在字空间。我知道这个边界框相对于与我的GL变换的坐标。

但我很难从这些计算他们的世界坐标。 你能否告诉我一些关于如何检索边界框中四个顶点的世界坐标的知识?

[1] http://sourceforge.net/projects/ftgl/

回答

2

最简单的方法就是问什么GL当前的模型视图矩阵是glGetFloatv(GL_MODELVIEW_MATRIX, m),并通过所产生的矩阵变换你的边界框的顶点。

   m[0] m[4] m[8] m[12]  v[0] 
      m[1] m[5] m[9] m[13]  v[1] 
    M(v) = m[2] m[6] m[10] m[14] X v[2] 
      m[3] m[7] m[11] m[15]  v[3] 

这会给你你的顶点的视空间四维齐次位置。

或者,你可以计算的模型观察自己的基础上,可用在glTranslated的手册页和glRotated

+0

谢谢你的提示数学。 – sum1stolemyname 2010-02-18 13:11:50

相关问题