如何转换坐标转化为世界在OpenGL坐标?
-
21-09-2019 - |
题
我有一个变换在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个顶点各自的世界坐标的一些见解?
解决方案
最简单的方法就是问什么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的手册页的数学
不隶属于 StackOverflow