我試圖實現正視相機的2D與OpenGL渲染的目標。
問題
沒有被繪製到屏幕上。
的設置
每個幀我使用此調用更新照相機:
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;
一切都正確繪製如果使用單位矩陣,而不是上面的一個。我的矩陣計算中可能存在一個問題?
爲什麼不使用http://glm.g-truc.net/?它從頭開始創建矩陣更加直觀! –
雖然glm是一個很好的庫,它在其他項目中對我來說工作得很好,但對於我來說,這是一個小項目,可以讓我學習如何在這些矩陣方面進行一切工作。我發現這個知識很有用。 – RaptorDotCpp
我明白,但GLM是一個非常輕的庫。你可以使用它,但仍然可以理解幕後的情況......但是如果你真的想讓自己成爲你的,那麼首先製作一個矩陣類,這樣你就可以乘上這些矩陣......然後用分開的步驟處理你的邏輯 –