目标
我正在尝试为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);
相机结构仅具有一个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);
一切正常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句