Login  Register

Re: blank screen by shader render

Posted by slava_jazz on Mar 22, 2012; 12:54pm
URL: https://forum.jogamp.org/blank-screen-by-shader-render-tp3848071p3848367.html

I did some more tries with "draw" workflow:

original::=
        gl2.glBindBuffer(GL2.GL_ARRAY_BUFFER, data[0]);
        gl2.glBindBuffer(GL2.GL_ELEMENT_ARRAY_BUFFER, data[1]);
        gl2.glVertexAttribPointer(a_vertex, 3, GL2.GL_FLOAT, false, 0, 0L);
        int count = Triangle.INDICES.length;
        gl2.glDrawElements(GL2.GL_TRIANGLES, count, GL2.GL_UNSIGNED_SHORT, 0);

alt1::=
        gl2.glBindBuffer(GL2.GL_ARRAY_BUFFER, 0);
        gl2.glBindBuffer(GL2.GL_ELEMENT_ARRAY_BUFFER, data[1]);
        gl2.glVertexAttribPointer(a_vertex, 3, GL2.GL_FLOAT, false,0,FloatBuffer.wrap(SHAPE));
        int count = Triangle.INDICES.length;
        gl2.glEnableVertexAttribArray(a_vertex);
        gl2.glDrawArrays(GL2.GL_TRIANGLES, 0, count);

alt2::=
        gl2.glBindBuffer(GL2.GL_ARRAY_BUFFER, data[0]);
        gl2.glBindBuffer(GL2.GL_ELEMENT_ARRAY_BUFFER, data[1]);
        gl2.glVertexAttribPointer(a_vertex, 3, GL2.GL_FLOAT, false, 0, 0l);
        int count = Triangle.INDICES.length;
        gl2.glDrawArrays(GL2.GL_TRIANGLES, 0, count);

alt3::=
        gl2.glBindBuffer(GL2.GL_ARRAY_BUFFER, 0);
        gl2.glBindBuffer(GL2.GL_ELEMENT_ARRAY_BUFFER, data[1]);
        gl2.glVertexAttribPointer(a_vertex, 3, GL2.GL_FLOAT, false,0,FloatBuffer.wrap(SHAPE));
        int count = Triangle.INDICES.length;
        gl2.glEnableVertexAttribArray(a_vertex);
        gl2.glDrawElements(GL2.GL_TRIANGLES, count, GL2.GL_UNSIGNED_SHORT, 0);

hmm, woks only alt1 - if I point on vertexes data on client side and if I use glDrawArrays....
Other variants does not work.  What is happens there? I do not like to transfer a lot of data from heap to gpu each time as "draw" called (see alt1 variant).  And why glDrawElements does not work in alt3 ?