Я прочитал этот ответ stackoverflow. И попытался запустить приведенный там код. Но все, что я получаю, это розовый экран. Я пришел к выводу, что проблема заключается в методе init (). Я пытался понять, как работают VAO и VBO, но до сих пор не понимаю. В большинстве примеров JOGL пропускаются части VAO, VBO или части с VAO или VBO, они очень сложны. Может кто-нибудь сказать мне, что я здесь не так сделал:
GL3 gl = drawable.getGL().getGL3();
gl.glEnableClientState(GL2.GL_VERTEX_ARRAY);
gl.glEnable(GL2.GL_DEPTH_TEST);
gl.glClearDepthf(10.0f);
gl.glClearColor(0.8f, 0.6f, 0.8f, 1.0f);
gl.glDepthFunc(GL2.GL_LEQUAL);
gl.glGenBuffers(2, buffers);
gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, buffers.get(0));
gl.glBufferData(GL2.GL_ARRAY_BUFFER, 4 * 6 * 2, vertexFB, GL3.GL_STATIC_DRAW);
gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, buffers.get(1));
gl.glBufferData(GL2.GL_ARRAY_BUFFER, 4 * 6 * 3, colorFB, GL2.GL_STREAM_DRAW);
gl.glGenVertexArrays(1, vertexArray);
gl.glBindVertexArray(vertexArray.get(0));
gl.glEnableVertexAttribArray(0);
gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, buffers.get(0));
gl.glVertexAttribPointer(0, 2, GL.GL_FLOAT, false, 0, 0);
gl.glEnableVertexAttribArray(1);
gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, buffers.get(1));
gl.glVertexAttribPointer(1, 3, GL.GL_FLOAT, false, 0, 0);
Я думаю, что я каким-то образом связываю VBO-ы неправильно или что-то в этом роде. Полный код и шейдеры. Цвета не отображаются. Это делает прямоугольник, но его белый. И я могу закомментировать часть шейдера, и я все еще получаю белый прямоугольник. Похоже, он не использует шейдер.