Problem with VBO
Hi all
I have successful drawn directly vertex in simpleOpenGlControl.
Now: i want store 1000 vertex in VRAM and draw them,
but the following code doesn't works (no one vertex are drawn in the simpleopenGlcontrol). Why ?
I have windows XP, visual c# 2005, Ati radeon X700, i use Tao Framework 2.0.
FormMain.cs
[...]
using Tao.OpenGl;
using Tao.Platform;
Gl.glClearColor(1.0f, 0.8f, 1.0f, 0.0f);
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glLoadIdentity();
Gl.glOrtho(0, WIN_WIDTH, 0, WIN_HEIGHT, -100, 100);
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
[...]
int[] buffers = new int[1];
int N_LINES = 1000;
int[] vertex = new int[N_LINES * 4];
//store coordinates in vector "vertex"
int indCorr = 0;
for (int j = 0; j < N_LINES; j++)
{
vertex[indCorr++] = 0;
vertex[indCorr++] = 0;
vertex[indCorr++] = 200;
vertex[indCorr++] = j;
}
//1) initialize buffer
Gl.glGenBuffersARB(1, buffers);
//2) bind buffer
Gl.glBindBufferARB(Gl.GL_ELEMENT_ARRAY_BUFFER_ARB, buffers[0]);
//3) copy vertex in VRAM
int dataSize = (indCorr * sizeof(int));
Gl.glBufferDataARB(Gl.GL_ELEMENT_ARRAY_BUFFER_ARB, (IntPtr)(dataSize), vertex, .GL_STATIC_DRAW_ARB);
Gl.glBindBufferARB(Gl.GL_ELEMENT_ARRAY_BUFFER_ARB, buffers[0]);
Gl.glEnableClientState(Gl.GL_VERTEX_ARRAY);
Gl.glDrawElements(Gl.GL_LINES, N_LINES, Gl.GL_INT, 0);
Gl.glDisableClientState(Gl.GL_VERTEX_ARRAY);
Gl.glFlush();
simpleOpenGlControl1.Refresh();
Thanks
Elvis

You're using the wrong
You're using the wrong buffer...
sorry... i don't
sorry... i don't understand
where is the error in the code ?
thanks
resolved
resolved with:
Gl.glGenBuffers(1, buffers);
Gl.glBindBuffer(Gl.GL_ELEMENT_ARRAY_BUFFER, buffers[0]);
int dataSize = (indCorr * sizeof(int));
Gl.glBufferData(Gl.GL_ELEMENT_ARRAY_BUFFER, (IntPtr)dataSize, vertici, Gl.GL_STATIC_DRAW);
Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER/*Gl.GL_ELEMENT_ARRAY_BUFFER*/, buffers[0]);
Gl.glEnable(Gl.GL_VERTEX_ARRAY);
Gl.glVertexPointer(2, Gl.GL_INT, 0, (IntPtr)0);
Gl.glDrawArrays(Gl.GL_LINES, 0, N_VERTICI);
Gl.glDisable(Gl.GL_VERTEX_ARRAY);
TimeSpan span = DateTime.Now - startTime;
Gl.glFlush();
simpleOpenGlControl1.Refresh();