public void drawShapes() { gl.clear(ClearBufferMask.COLOR_BUFFER_BIT, ClearBufferMask.DEPTH_BUFFER_BIT); MODELVIEW.push(); float[] gt = getState().translation; if (gt != null) { MODELVIEW.translate(gt[0], gt[1], gt[2]); } for (int i = 0; i < vertices.length; ++i) { WebGLState s = getState(); MODELVIEW.push(); MODELVIEW.translate(s.shapes[i].tx, s.shapes[i].ty, s.shapes[i].tz); MODELVIEW.rotateX(s.shapes[i].rx); MODELVIEW.rotateY(s.shapes[i].ry); MODELVIEW.rotateZ(s.shapes[i].rz); setMatrixUniforms(); MODELVIEW.pop(); gl.bindBuffer(BufferTarget.ARRAY_BUFFER, vertices[i]); gl.vertexAttribPointer(vertexPositionAttribute, 3, DataType.FLOAT, false, 0, 0); gl.bindBuffer(BufferTarget.ARRAY_BUFFER, colors[i]); gl.vertexAttribPointer(vertexColorAttribute, 4, DataType.FLOAT, false, 0, 0); if (indices[i] != null) { gl.bindBuffer(BufferTarget.ELEMENT_ARRAY_BUFFER, indices[i]); gl.drawElements(BeginMode.TRIANGLES, 36, DrawElementsType.UNSIGNED_SHORT, 0); } else { gl.drawArrays(BeginMode.TRIANGLE_STRIP, 0, 3); } } MODELVIEW.pop(); }
private void setMatrixUniforms() { gl.uniformMatrix(shader.getUniformLocation("uMVMatrix"), MODELVIEW.get()); }