GLvoid LOADcubeGL(GLvoid){
glGenBuffers = (PFNGLGENBUFFERSARBPROC)wglGetProcAddress("glGenBuffers");
glBindBuffer = (PFNGLBINDBUFFERARBPROC)wglGetProcAddress("glBindBuffer");
glBufferData = (PFNGLBUFFERDATAARBPROC)wglGetProcAddress("glBufferData");
glBufferSubData = (PFNGLBUFFERSUBDATAARBPROC)wglGetProcAddress("glBufferSubData");
glDeleteBuffers = (PFNGLDELETEBUFFERSARBPROC)wglGetProcAddress("glDeleteBuffers");
glGenBuffers(1, &gVerts);
glBindBuffer(GL_ARRAY_BUFFER, gVerts);
glBufferData(GL_ARRAY_BUFFER,
sizeof(vertices)+sizeof(normals)+sizeof(colors)+sizeof(texcoords),
0,
GL_STATIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices), sizeof(normals), normals);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices)+sizeof(normals), sizeof(colors), colors);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices)+sizeof(normals)+sizeof(colors), sizeof(texcoords), texcoords);
glGenBuffers(1, &gIndices);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, gIndices);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
glVertexPointer(3, GL_FLOAT, 0, (void*)0);
glNormalPointer(GL_FLOAT, 0, (void*)sizeof(vertices));
glColorPointer(4, GL_FLOAT, 0, (void*)(sizeof(vertices)+sizeof(normals)));
glTexCoordPointer(2, GL_FLOAT, 0, (void*)(sizeof(vertices)+sizeof(normals)+sizeof(colors)));
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
delete[] vertices;
delete[] indices;
};
GLvoid ACTIVATEcubeGL(GLvoid){
glBindBuffer(GL_ARRAY_BUFFER_ARB, gVerts);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, gIndices);
};
GLvoid KILLcubeGL(GLvoid){
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glDeleteBuffers(1, &gVerts);
glDeleteBuffers(1, &gIndices);
};
// and for draw:
GLvoid bigcubeGL(){
glPushMatrix();
glRotatef( GLrotate_y, 0.0, 1.0, 0.0 );
glRotatef( GLrotate_x, 1.0, 0.0, 0.0 );
glTranslatef(multiplxGL+0.5+spaceGL/2, multiplyGL+0.5+spaceGL/2, multiplzGL+0.5+spaceGL/2);
glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_SHORT, (void*)0);
glPopMatrix();
glPushMatrix();
...
}