我在OpenGL ES 2.0中創建了一個應用程序,並且想要設置一個2D投影矩陣來整理由方面引起的拉伸和失真屏幕的比例。我通過使用函數創建了具有所需值的矩陣。函數的結果是一個4x4矩陣,然後上傳到頂點着色器。當我運行該程序時,出現一個編譯錯誤:「無法轉換GLfloat (*)[4]' to
GLfloat'作爲回報」。我有限的C++知識,不知道如何解決這個問題,下面是我調用的函數的代碼。OpenGL ES 2.0 2D投影矩陣,將GLfloat(*)[4]錯誤轉換爲GLfloat
GLfloat ortho_matrix(float left, float right, float bottom, float top, float near,
float far)
{
GLfloat result[4][4];
result[0][0] = 2.0/(right - left);
result[1][0] = 0.0;
result[2][0] = 0.0;
result[3][0] = 0.0;
//Second Column
result[0][1] = 0.0;
result[1][1] = 2.0/(top - bottom);
result[2][1] = 0.0;
result[3][1] = 0.0;
//Third Column
result[0][2] = 0.0;
result[1][2] = 0.0;
result[2][2] = -2.0/(far - near);
result[3][2] = 0.0;
//Fourth Column
result[0][3] = -(right + left)/(right - left);
result[1][3] = -(top + bottom)/(top - bottom);
result[2][3] = -(far + near)/(far - near);
result[3][3] = 1;
return result;
}
我需要返回的數組'結果'而不是虛空暗示的任何內容。我應該用什麼替換void來使數組返回? –
在我的原型中,您將通過函數的''result''參數返回結果。你不需要函數中的''return''語句和''result [4] [4]''聲明。 –
我解決了它。最後,我將它存儲爲一維矩陣,因爲我使用的統一函數(glUniformMatrix4fv)在將它導入着色器之前自動將其轉換爲二維矩陣。然後解決了從Glfloat 4x4轉換爲GLfloat的問題。感謝您的建議,並幫助我找到正確的答案。 –