0

我在 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();

这按预期工作。

但是,我想计算 3d-Boundingbox 将我的文本限制在单词空间中。我知道这个边界框对于我的 GL 变换的坐标。

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

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

4

1 回答 1

3

最简单的方法是询问 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 手册页中可用的数学计算自己的模型视图

于 2010-02-18T12:07:57.360 回答