我有一个变换在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();

此按预期工作。

不过,我想计算出三维的BoundingBox至极界定我的字的空格文本。我知道这个边界框的坐标的相对的我的GL-转型。

但我有一个很难计算他们的世界,从这些坐标。 你能给我如何检索边框中的4个顶点各自的世界坐标的一些见解?

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

有帮助吗?

解决方案

最简单的方法就是问什么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]

这会给你顶点的视图空间4-D均匀的位置。

或者,你可以自己计算模型视图,基于可用的glTranslated和glRotated的手册页的数学

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top