Hello,
After a good few hours of reading and trying, I still can’t get VBOs to work. Below are relevant parts of the code, but the code was made in C# using Tao Framework(OpenGl library). keyword “out” means the same as & in C++, and (IntPtr)x is the equivalent of (char *)NULL + x.
[b]//init
Gl.glClearColor(0, 0, 0, 0.5f);
Gl.glViewport(0, 0, width, height);
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
Gl.glFrustum(-1, 1, -1, 1, 1, 1000);
Gl.glMatrixMode(Gl.GL_MODELVIEW);
Gl.glLoadIdentity();
float[] a = new float[16] {-1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}; //first 3 floats - coors, last 4 - color
float[] b = new float[16] {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}; // 16 floats in a single vertex = 64 Bytes
float[] c = new float[16] {1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0};
int [] VerticeIndice = new int[3] {0,1,2} //3 ints = 12 bytes
//VBOs creating
Gl.glGenBuffers(1, out VBOadress);
Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, VBOadress);
Gl.glBufferData(Gl.GL_ARRAY_BUFFER, (IntPtr)192, null, Gl.GL_STATIC_DRAW);
Gl.glBufferSubData(Gl.GL_ARRAY_BUFFER, (IntPtr)0, (IntPtr)64, a);
Gl.glBufferSubData(Gl.GL_ARRAY_BUFFER, (IntPtr)64, (IntPtr)64, b);
Gl.glBufferSubData(Gl.GL_ARRAY_BUFFER, (IntPtr)128, (IntPtr)64, c);
Gl.glGenBuffers(1, out IVBOadress);
Gl.glBindBuffer(Gl.GL_ELEMENT_ARRAY_BUFFER, IVBOadress);
Gl.glBufferData(Gl.GL_ELEMENT_ARRAY_BUFFER, (IntPtr)12, null, Gl.GL_STATIC_DRAW);
Gl.glBufferSubData(Gl.GL_ELEMENT_ARRAY_BUFFER, (IntPtr)0, (IntPtr)12, VerticeIndice);
//rendering
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glLoadIdentity();
Gl.glPushMatrix();
Gl.glTranslatef(0, 0, -10);
Gl.glEnableClientState(Gl.GL_VERTEX_ARRAY);
Gl.glEnableClientState(Gl.GL_COLOR_ARRAY);
Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, VBOadress);
Gl.glVertexPointer(3, Gl.GL_FLOAT, 64, (IntPtr)0);
Gl.glColorPointer(4, Gl.GL_FLOAT, 64, (IntPtr)12);
Gl.glBindBuffer(Gl.GL_ELEMENT_ARRAY_BUFFER, IVBOadress);
Gl.glDrawElements(Gl.GL_TRIANGLES, 3, Gl.GL_UNSIGNED_INT, (IntPtr)0);
Gl.glDisableClientState(Gl.GL_INDEX_ARRAY);
Gl.glDisableClientState(Gl.GL_COLOR_ARRAY);
Gl.glDisableClientState(Gl.GL_VERTEX_ARRAY);
Gl.glPopMatrix();
Gl.glFlush();[/b]
The code produces a black screen - nothing get’s drawn.
Thanks in advance;)