1

我在 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};

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

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

4

2 回答 2

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)

于 2012-10-04T19:08:30.730 回答
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

于 2012-10-06T14:00:16.530 回答