Yeah, I have resolved this problem with your help. Thanks a lot.
I find if I query the extension of VBO, they all return NULL. So I have to directly wglGetProcAddress the functions and include the latest head file “glext.h”.That’s OK
But another problem here,I can not use multitexture as what I use in VAR.
void InitVBOTest()
{
float *data = new float[CtrlNum*MeshNum*8];--->each one includes vertex position, normal, 2d texture coordinates.
UpdateVARData(data);--->generate data
//////Index
glGenBuffersARB(1, &index_buffer);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, index_buffer);
glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, (CtrlNum-1)*2*(MeshNum+1) * sizeof(GLuint), MeshStripIndex, GL_STATIC_DRAW_ARB);
glGenBuffersARB(1, &static_vertex_buffer);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, static_vertex_buffer);
glBufferDataARB(GL_ARRAY_BUFFER_ARB, CtrlNum*MeshNum * 8 * sizeof(GLfloat), data, GL_STATIC_DRAW_ARB);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glVertexPointer ( 3, GL_FLOAT, 8 * sizeof(GLfloat), BUFFER_OFFSET(0) );
glNormalPointer(GL_FLOAT,8 * sizeof(GLfloat), BUFFER_OFFSET(3));
////////Mutitexture here glClientActiveTextureARB( GL_TEXTURE0_ARB );
glEnableClientState(GL_TEXTURE_COORD_ARRAY );
glTexCoordPointer(2, GL_FLOAT, 8 * sizeof(GLfloat), BUFFER_OFFSET(6));
glClientActiveTextureARB( GL_TEXTURE1_ARB );
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
glTexCoordPointer(2, GL_FLOAT, 8 * sizeof(GLfloat), BUFFER_OFFSET(6));
//Tex1
glActiveTextureARB ( GL_TEXTURE0_ARB );
glEnable( GL_TEXTURE_2D );
glBindTexture(GL_TEXTURE_2D, SunTexNo );
//Tex2
glActiveTextureARB ( GL_TEXTURE1_ARB );
glEnable( GL_TEXTURE_2D );
glBindTexture(GL_TEXTURE_2D, SkyTexNo);
}
void VBORender()
{
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, index_buffer);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, static_vertex_buffer);
glDrawElements(GL_QUAD_STRIP, (CtrlNum-1)2(MeshNum+1), GL_UNSIGNED_INT, 0);
}
Can someone pick out the problem, thanks again.
[This message has been edited by foollove (edited 04-12-2003).]