Как создать VAO и VBO для использования с JOGL? - PullRequest
0 голосов
/ 29 января 2020

Я прочитал этот ответ 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-ы неправильно или что-то в этом роде. Полный код и шейдеры. Цвета не отображаются. Это делает прямоугольник, но его белый. И я могу закомментировать часть шейдера, и я все еще получаю белый прямоугольник. Похоже, он не использует шейдер.

...