我在學習OpenGL,並且出現錯誤渲染的問題。這是我遇到的問題,金字塔的邊緣之間存在差距。OpenGL顯示錯誤 - 顯示不正確
下面是我使用來構建頂點。
// Create Pyramid Vertex Buffer
FloatBuffer vertexBuffer = BufferUtils.createFloatBuffer(3 * 12);
vertexBuffer.put(new float[]
{
// Side one
0f, 0.8f, 0f,
-0.8f, -0.8f, 0.8f,
0.8f, -0.8f, 0.8f,
// Side two
0f, 0.8f, 0f,
0.8f, -0.8f, 0.8f,
0.8f, -0.8f, -0.8f,
// Side three
0f, 0.8f, 0f,
0.8f, -0.8f, -0.8f,
-0.8f, -0.8f, -0.8f,
// Side four
0f, 0.8f, 0f,
-0.8f, -0.8f, -0.8f,
-0.8f, -0.8f, 0.8f
});
vertexBuffer.rewind();
我認爲這是因爲模型出來的屏幕。所以我想在翻譯的z軸應該是不錯,我打電話glDrawArrays
glTranslatef(0f, 0f, -1f);
這想出了這個奇怪的行爲前加入這一行,有被吸引更多邊。
三方呈現,但只應該查看只有兩個!我怎麼解決這個問題?我也啓用了深度測試。
下面是如何初始化的OpenGL
// Initialize OpenGL
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1, 1, -1, 1, 1, -1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glViewport(0, 0, Display.getWidth(), Display.getHeight());
你能發佈你的視口創建代碼嗎?我無法判斷三角形是否被你的近平截頭體或者遠截錐體或兩者的組合所切斷。我認爲你在第二張照片中看到了金字塔的內部,而在第一張照片的黑斑中看到了世界的後面。然而,這樣做似乎是反直覺的,因爲走得更遠應該導致你在第一張照片中得到的東西,如果你靠近,你應該看到金字塔的內部。另外,你有其他轉換嗎?哪個vert參數映射到哪個顏色? X->紅色,Y->綠色? – zero298
@ zero298我已經包含了初始化opengl的代碼。另外我沒有任何着色器。我已經改變了glOrtho的功能,但我仍然不明白爲什麼。 –