Hello, I've made a basic corridor using immediate OpenGL drawing and I want to transfer it to VBOs. However, it just doesn't work. The immediate drawing works fine, yet I tried to make it using VBOs and it doesn't work. Here is what I am trying to create:

And here is the code that I used for that:
1 2 3 4 5 6 7 8
| GL11.glColor3f(1F, 0F, 0F); GL11.glVertex3f(0.5F, 1.5F, 1.0F); GL11.glColor3f(0F, 1F, 0F); GL11.glVertex3f(0.5F, 1.5F, -15.0F); GL11.glColor3f(0F, 0F, 1F); GL11.glVertex3f(0.5F, -1.5F, -15.0F); GL11.glColor3f(0.5F, 0.5F, 0.5F); GL11.glVertex3f(0.5F, -1.5F, 1.0F); |
Yet when I try to use VBOs for the same thing, it doesn't work and I just get a black window. Here is my class to create is using VBOs.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| import java.nio.FloatBuffer;
import org.lwjgl.*; import org.lwjgl.opengl.*; import org.lwjgl.util.glu.GLU;
import static org.lwjgl.opengl.ARBBufferObject.*; import static org.lwjgl.opengl.ARBVertexBufferObject.*; import static org.lwjgl.opengl.GL11.*;
public class VBO { static int w = 640; static int h = 480;
public static void main(String[] args) { try { initWindow(); renderLoop(); } catch (LWJGLException e) { e.printStackTrace(); } }
static void initWindow() throws LWJGLException { Display.setDisplayMode(new DisplayMode(w, h)); Display.setFullscreen(false); Display.create();
glViewport(0, 0, w, h); }
static void renderLoop() { while (!Display.isCloseRequested()) { preRender(); render();
Display.update(); Display.sync(20); } Display.destroy(); }
static void preRender() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
glMatrixMode(GL_PROJECTION); glLoadIdentity();
glMatrixMode(GL_MODELVIEW); glLoadIdentity(); }
static void render() { glClearColor(1, 1, 1, 1); glLoadIdentity(); glBegin(7); drawVertexArray(); }
static void drawVertexArray() { FloatBuffer cBuffer = BufferUtils.createFloatBuffer(12); cBuffer.put(1).put(0).put(0); cBuffer.put(0).put(1).put(0); cBuffer.put(0).put(0).put(1); cBuffer.put(0.5F).put(0.5F).put(0.5F); cBuffer.flip();
FloatBuffer vBuffer = BufferUtils.createFloatBuffer(12); vBuffer.put(0.5F).put(1.5f).put(1.0f); vBuffer.put(0.5f).put(1.5f).put(-15.0f); vBuffer.put(0.5f).put(-1.5f).put(-15.0f); vBuffer.put(0.5f).put(-1.5f).put(1.0f); vBuffer.flip(); glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(4, 4 << 2, cBuffer); glVertexPointer(4, 4 << 2, vBuffer); glDrawArrays(GL_QUADS, 0, 4);
glDisableClientState(GL_COLOR_ARRAY); glDisableClientState(GL_VERTEX_ARRAY); } } |