Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 正确计算OpenGL使用的模型和视图矩阵?_C_Opengl_Matrix_Model View_Projection Matrix - Fatal编程技术网

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

C 正确计算OpenGL使用的模型和视图矩阵?,c,opengl,matrix,model-view,projection-matrix,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,

我对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};
我知道这个正交矩阵必须乘以模型矩阵和视图矩阵,这些矩阵必须乘以点。如何设置这些矩阵


编辑:我不介意它们是否连接成一个(modelview)

我建议您使用OpenGL数学库,而不是自己实现所有功能。OpenGL Mathematics包含OpenGL所需的所有数学知识,其语法受GLSL启发。该库位于以下位置:

或者,您可以实现自己的数学库。在这种情况下,我建议您看看Angels数学库(摘自《交互式计算机图形:基于着色器的OpenGL自上而下方法,6/E》一书)。此库非常容易理解:


(查看mat.h和vec.h)

我建议您使用库OpenGL Mathematics,而不是自己实现所有功能。OpenGL Mathematics包含OpenGL所需的所有数学知识,其语法受GLSL启发。该库位于以下位置:

或者,您可以实现自己的数学库。在这种情况下,我建议您看看Angels数学库(摘自《交互式计算机图形:基于着色器的OpenGL自上而下方法,6/E》一书)。此库非常容易理解:


(查看mat.h和vec.h)

如果您只想计算modelview矩阵,可以参考参考页了解它在GLU中的实现方式。(实际上,您不能在OpenGL 3中使用GLU库,但参考页显示了矩阵数学是如何在内部实现的。)

对于“摄像机”的定位:

进行翻译:

进行旋转时:

如果您只想计算modelview矩阵,可以参考参考页了解它在GLU中的实现方式。(实际上,您不能在OpenGL 3中使用GLU库,但参考页显示了矩阵数学是如何在内部实现的。)

对于“摄像机”的定位:

进行翻译:

进行旋转时:

您当时使用的是什么语言?@user1575991那么您可能想用您正在使用的语言标记您的问题。您可以为此牺牲glsl标记,它无论如何不适合这里。C,它没有GL矩阵库(我知道)。我可以自己做矩阵运算,我只需要知道如何为GL设置这些矩阵。你当时使用的是什么语言?@user1575991那么你可能想用你正在使用的语言标记你的问题。您可以为此牺牲glsl标记,它无论如何不适合这里。C,它没有GL矩阵库(我知道)。我可以自己做矩阵运算,我只需要知道如何为GL设置这些矩阵。OpenGL手册页包含、、等的公式。OpenGL手册页包含、、等的公式。