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 ?