Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Variable Declarations
- //<editor-fold defaultstate="collapsed" desc="Variable Declarations">
- private static FloatBuffer cBuffer;
- private static FloatBuffer vBuffer;
- private static ShortBuffer iBuffer;
- private static int vHandle3;
- private static int cHandle3;
- private static int vHandle4;
- private static int cHandle4;
- private static int iHandle4;
- private static int vcHandle5;
- private static FloatBuffer vcBuffer5;
- private static int vcHandle6;
- private static FloatBuffer vcBuffer6;
- private static int vcHandle7;
- private static FloatBuffer vcBuffer7;
- //</editor-fold>
- // Publicly accessable Methods to control functions of this class
- //<editor-fold defaultstate="collapsed" desc="Public Methods">
- public static void initializeBuffers(){
- initVertexArrays();
- initVBO();
- initVBOIndexed();
- initVBOInterleaved1();
- initVBOInterleaved2();
- initVBOInterleaved3Mapped();
- }
- public static void drawThem(){
- // Initialize States
- glEnableClientState(GL_VERTEX_ARRAY);
- glEnableClientState(GL_COLOR_ARRAY);
- drawImmediateMode();
- glTranslatef(0.05f, -0.05f, 0);
- drawVertexArrays();
- glTranslatef(0.05f, -0.05f, 0);
- drawVBO();
- glTranslatef(0.05f, -0.05f, 0);
- drawVBOIndexed();
- glTranslatef(0.05f, -0.05f, 0);
- drawVBOInterleaved1();
- glTranslatef(0.05f, -0.05f, 0);
- drawVBOInterleaved2();
- glTranslatef(0.05f, -0.05f, 0);
- drawVBOInterleaved3Mapped();
- // Clean up States
- glDisableClientState(GL_COLOR_ARRAY);
- glDisableClientState(GL_VERTEX_ARRAY);
- }
- //</editor-fold>
- // Internal Methods used within this class only
- //<editor-fold defaultstate="collapsed" desc="Internal Methods">
- private static void initVertexArrays(){
- cBuffer = BufferUtils.createFloatBuffer(9);
- cBuffer.put(1).put(0).put(0);
- cBuffer.put(0).put(1).put(0);
- cBuffer.put(0).put(0).put(1);
- cBuffer.flip();
- vBuffer = BufferUtils.createFloatBuffer(9);
- vBuffer.put(-0.5f).put(-0.5f).put(0.0f);
- vBuffer.put(+0.5f).put(-0.5f).put(0.0f);
- vBuffer.put(+0.5f).put(+0.5f).put(0.0f);
- vBuffer.flip();
- iBuffer = BufferUtils.createShortBuffer(3);
- iBuffer.put((short) 0);
- iBuffer.put((short) 1);
- iBuffer.put((short) 2);
- iBuffer.flip();
- }
- private static void initVBO(){
- // Initialize Handles
- vHandle3 = glGenBuffers();
- cHandle3 = glGenBuffers();
- // Bind vertexes
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, vHandle3);
- glBufferDataARB(GL_ARRAY_BUFFER_ARB, vBuffer, GL_STATIC_DRAW_ARB);
- // Bind Colors
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, cHandle3);
- glBufferDataARB(GL_ARRAY_BUFFER_ARB, cBuffer, GL_STATIC_DRAW_ARB);
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); // Unbind
- }
- private static void initVBOIndexed(){
- // Initialize Handles
- vHandle4 = glGenBuffers();
- cHandle4 = glGenBuffers();
- iHandle4 = glGenBuffers();
- // Bind vertexes
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, vHandle4);
- glBufferDataARB(GL_ARRAY_BUFFER_ARB, vBuffer, GL_STATIC_DRAW_ARB);
- // Bind Colors
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, cHandle4);
- glBufferDataARB(GL_ARRAY_BUFFER_ARB, cBuffer, GL_STATIC_DRAW_ARB);
- // Bind Indexes
- glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, iHandle4);
- glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, iBuffer, GL_STATIC_DRAW_ARB);
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); // Unbind
- }
- private static void initVBOInterleaved1(){
- // Interleaved in pattern VCVCVC
- // create geometry buffer (both vertex and color)
- vcBuffer5 = BufferUtils.createFloatBuffer(9 + 9);
- vcBuffer5.put(-0.5f).put(-0.5f).put(0.0f); // v
- vcBuffer5.put(1).put(0).put(0); // c
- vcBuffer5.put(+0.5f).put(-0.5f).put(0.0f); // v
- vcBuffer5.put(0).put(1).put(0); // c
- vcBuffer5.put(+0.5f).put(+0.5f).put(0.0f); // v
- vcBuffer5.put(0).put(0).put(1); // c
- vcBuffer5.flip();
- // Initialize Handles
- vcHandle5 = glGenBuffers();
- // Bind Buffer
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, vcHandle5);
- glBufferDataARB(GL_ARRAY_BUFFER_ARB, vcBuffer5, GL_STATIC_DRAW_ARB);
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); // Unbind
- }
- private static void initVBOInterleaved2(){
- // create geometry buffer (both vertex and color)
- vcBuffer6 = BufferUtils.createFloatBuffer(9 + 9);
- vcBuffer6.put(-0.5f).put(-0.5f).put(0.0f); // v
- vcBuffer6.put(+0.5f).put(-0.5f).put(0.0f); // v
- vcBuffer6.put(+0.5f).put(+0.5f).put(0.0f); // v
- vcBuffer6.put(1).put(0).put(0); // c
- vcBuffer6.put(0).put(1).put(0); // c
- vcBuffer6.put(0).put(0).put(1); // c
- vcBuffer6.flip();
- // Initialize Handles
- vcHandle6 = glGenBuffers();
- // Bind Buffer
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, vcHandle6);
- glBufferDataARB(GL_ARRAY_BUFFER_ARB, vcBuffer6, GL_STATIC_DRAW_ARB);
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); // Unbind
- }
- private static void initVBOInterleaved3Mapped(){
- // No prep?
- }
- private static void drawImmediateMode(){
- glBegin(GL_TRIANGLES);
- {
- glColor3f(1, 0, 0);
- glVertex3f(-0.5f, -0.5f, 0.0f);
- glColor3f(0, 1, 0);
- glVertex3f(+0.5f, -0.5f, 0.0f);
- glColor3f(0, 0, 1);
- glVertex3f(+0.5f, +0.5f, 0.0f);
- }
- glEnd();
- }
- private static void drawVertexArrays(){
- // Assign pointers
- glVertexPointer(3, /* stride */3 << 2, vBuffer);
- glColorPointer(3, /* stride */3 << 2, cBuffer);
- // Draw
- glDrawArrays(GL_TRIANGLES, 0, /* elements */3);
- }
- private static void drawVBO(){
- // Bind vertexes
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, vHandle3);
- glVertexPointer(3, GL_FLOAT, /* stride */3 << 2, 0L);
- // Bind Colors
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, cHandle3);
- glColorPointer(3, GL_FLOAT, /* stride */3 << 2, 0L);
- // Draw
- glDrawArrays(GL_TRIANGLES, 0, 3 /* elements */);
- //<editor-fold defaultstate="collapsed" desc="Cleanup">
- // Cleanup bound buffers
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
- // Cleanup VBO handles
- glDeleteBuffers(vHandle3);
- glDeleteBuffers(cHandle3);
- //</editor-fold>
- }
- private static void drawVBOIndexed(){
- // Bind vertexes
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, vHandle4);
- glVertexPointer(3, GL_FLOAT, /* stride */3 << 2, 0L);
- // Bind Colors
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, cHandle4);
- glColorPointer(3, GL_FLOAT, /* stride */3 << 2, 0L);
- // Bind Indexes
- glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, iHandle4);
- glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, iBuffer, GL_STATIC_DRAW_ARB);
- // Draw
- glDrawElements(GL_TRIANGLES, /* elements */3, GL_UNSIGNED_SHORT, 0L);
- //<editor-fold defaultstate="collapsed" desc="Cleanup">
- // Cleanup bound buffers
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
- glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
- // Cleanup VBO handles
- glDeleteBuffers(vHandle4);
- glDeleteBuffers(cHandle4);
- glDeleteBuffers(iHandle4);
- //</editor-fold>
- }
- private static void drawVBOInterleaved1(){
- // Interleaved in pattern VCVCVC
- // Bind Buffer
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, vcHandle5);
- glBufferDataARB(GL_ARRAY_BUFFER_ARB, vcBuffer5, GL_STATIC_DRAW_ARB);
- glVertexPointer(3, GL_FLOAT, /* stride **/(3 * 2) << 2, /* offset **/0 << 2); // float at index 0
- glColorPointer(3, GL_FLOAT, /* stride **/(3 * 2) << 2, /* offset **/(3*1) << 2); // float at index 3
- // Draw
- glDrawArrays(GL_TRIANGLES, 0, 3 /* elements */);
- //<editor-fold defaultstate="collapsed" desc="Cleanup">
- // Cleanup bound buffers
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
- // Cleanup VBO handles
- glDeleteBuffers(vcHandle5);
- //</editor-fold>
- }
- private static void drawVBOInterleaved2(){
- // Interleaved in pattern VVVCCC
- // Bind Buffer
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, vcHandle6);
- glVertexPointer(3, GL_FLOAT, /* stride **/(3 * 1) << 2, /* offset */0 << 2); // float at index 0
- glColorPointer(3, GL_FLOAT, /* stride **/(3 * 1) << 2, /* offset */(3 * 3) << 2); // float at index 9
- // Draw
- glDrawArrays(GL_TRIANGLES, 0, 3 /* elements */);
- //<editor-fold defaultstate="collapsed" desc="Cleanup">
- // Cleanup bound buffers
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
- // Cleanup VBO handles
- glDeleteBuffers(vcHandle6);
- //</editor-fold>
- }
- private static void drawVBOInterleaved3Mapped(){
- // Initialize Handles
- vcHandle7 = glGenBuffers();
- // Bind Buffer
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, vcHandle7);
- glBufferDataARB(GL_ARRAY_BUFFER_ARB, (9 + 9) << 2, GL_STATIC_DRAW_ARB);
- // Map Buffer?
- {
- ByteBuffer dataBuffer = glMapBufferARB(GL_ARRAY_BUFFER_ARB, ARBBufferObject.GL_WRITE_ONLY_ARB, (9 + 9) << 2, null);
- // create geometry buffer (both vertex and color)
- vcBuffer7 = dataBuffer.order(ByteOrder.nativeOrder()).asFloatBuffer();
- vcBuffer7.put(-0.5f).put(-0.5f).put(0.0f); // v
- vcBuffer7.put(1).put(0).put(0); // c
- vcBuffer7.put(+0.5f).put(-0.5f).put(0.0f); // v
- vcBuffer7.put(0).put(1).put(0); // c
- vcBuffer7.put(+0.5f).put(+0.5f).put(0.0f); // v
- vcBuffer7.put(0).put(0).put(1); // c
- vcBuffer7.flip();
- glUnmapBufferARB(GL_ARRAY_BUFFER_ARB);
- }
- // Initialize Pointers
- glVertexPointer(3, GL_FLOAT, /* stride */(3 * 2) << 2, /* offset */0L << 2); // float at index 0
- glColorPointer(3, GL_FLOAT, /* stride */(3 * 2) << 2, /* offset */(3 * 1) << 2); // float at index 3
- // Draw
- glDrawArrays(GL_TRIANGLES, 0, 3 /* elements */);
- //<editor-fold defaultstate="collapsed" desc="Cleanup">
- // Cleanup bound buffers
- glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
- // Cleanup VBO handles
- glDeleteBuffers(vcHandle7);
- //</editor-fold>
- }
- //</editor-fold>
Advertisement
Add Comment
Please, Sign In to add comment