正确计算OpenGL使用的模型和视图矩阵?

时间:2012-10-04 18:51:19

标签: c opengl matrix model-view projection-matrix

我在GL 3.2中遇到了一些矩阵问题。如何,最好以矩阵表示法,如何生成模型和查看矩阵?如何设置模型/视图矩阵?我已经有了投影矩阵;它被定义为:

float right = 800.0f, left = 0.0f;
float top = 0.0f, bottom = 600.0f;
float far = 1.0f, near = -1.0f;

float ortho_mat[16] = {(2.0f / (right - left)), 0.0f, 0.0f, 0.0f,
                     0.0f, (2.0f / (top - bottom)), 0.0f, 0.0f,
                     0.0f, 0.0f, (-2.0f / (far - near)), 0.0f,
                     (-((right + left) / (right - left))),
                     (-((top + bottom) / (top - bottom))),
                     (-((far + near) / (far - near))), 1.0f};

据我所知,这个正交矩阵必须乘以模型和视图矩阵,并且必须乘以该点。我如何设置这些矩阵?

编辑:我不介意他们是否被连接成一个(模型视图)。

2 个答案:

答案 0 :(得分:1)

我建议您使用OpenGL数学库,而不是自己实现所有内容。 OpenGL数学包含OpenGL所需的所有数学 - 语法灵感来自GLSL。图书馆在这里找到:

http://glm.g-truc.net/

另外,你可以实现自己的数学库。在这种情况下,我建议你看看Angels数学库(来自“交互式计算机图形:基于着色器的OpenGL,6 / E的自上而下方法”一书)。这个库很容易理解:

http://www.cs.unm.edu/~angel/BOOK/INTERACTIVE_COMPUTER_GRAPHICS/SIXTH_EDITION/CODE/include/

(查看mat.h和vec.h)

答案 1 :(得分:0)

如果您只想计算模型视图矩阵,可以参考参考页面了解它在GLU中的实现方式。 (您无法在OpenGL 3中实际使用GLU库,但参考页面显示了如何在内部实现矩阵数学。)

用于定位“相机”: http://www.opengl.org/sdk/docs/man/xhtml/gluLookAt.xml

进行翻译: http://www.opengl.org/sdk/docs/man/xhtml/glTranslate.xml

进行轮换: http://www.opengl.org/sdk/docs/man/xhtml/glRotate.xml