C 正交摄像机投影矩阵

C 正交摄像机投影矩阵,c,opengl,matrix,orthographic,C,Opengl,Matrix,Orthographic,目标 我正在尝试使用OpenGL实现用于2D渲染的正交摄影机 问题 屏幕上没有显示任何内容 设置 我使用此调用更新相机的每一帧: updateCamera(&gCamera, -10.0f, 10.0f, 0.0f, 10.0f, 1.0f, -1.0f); updateCamera方法具有以下声明: void updateCamera(Camera* cam, float top, float bottom, float left, float right, float zFar,

目标

我正在尝试使用OpenGL实现用于2D渲染的正交摄影机

问题

屏幕上没有显示任何内容

设置

我使用此调用更新相机的每一帧:

updateCamera(&gCamera, -10.0f, 10.0f, 0.0f, 10.0f, 1.0f, -1.0f);
updateCamera方法具有以下声明:

void updateCamera(Camera* cam, float top, float bottom, float left, float right, float zFar, float zNear);
camera结构只有一个表示矩阵的
float opm[4][4]
成员

updateCamera方法具有以下实现:

cam->opm[0][0] = 2.0f / (right - left);
cam->opm[1][1] = 2.0f / (top - bottom);
cam->opm[2][2] = -2.0f / (zFar - zNear);
cam->opm[3][0] = -(right + left) / (right - left);
cam->opm[3][1] = -(top + bottom) / (top - bottom);
cam->opm[3][2] = -(zFar + zNear) / (zFar - zNear);
cam->opm[3][3] = 1.0f;

如果我用一个单位矩阵而不是上面的那个,所有的东西都画对了。也许在我计算矩阵时有问题?

首先使用单位矩阵来确定绘图是否有效,然后添加缩放和平移。

问题在于顶点的定义和调用
updateCamera

三角形非常小,因此无法使用这些参数绘制

使用以下绘制调用:

updateCamera(&gCamera, -1.0f, 1.0f, -1.0f, 1.0f, 1.0f, -1.0f);

一切正常。

为什么不使用?从头开始创建矩阵更直观!虽然glm是一个很棒的库,它在其他项目中对我来说非常好,但对于我来说,这是一个小项目,用于学习关于这些矩阵的一切是如何工作的。我发现这些知识很有用。我理解,但GLM是一个非常轻松的库。您可以在了解幕后情况的同时使用then。。。但是如果你真的想做你的,首先做一个矩阵类,这样你就可以把矩阵相乘。。。然后用不同的步骤来研究你的逻辑谢谢你的建议我发现了问题并回答了我自己的问题。