私は 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);
これにより、より多くの面が描画されるという奇妙な動作が発生しました。
3 つの側面がレンダリングされますが、2 つのみしか表示されません。どうすればこの問題を解決できますか? 深度テストも有効にしました。
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());