void unload_wavefront(MODEL_T m) { WAVEFRONT_MODEL_T *model = (WAVEFRONT_MODEL_T *)m; int i; for (i=0; i<model->num_materials; i++) { WAVEFRONT_MATERIAL_T *mat = model->material + i; if (mat->vbo[VBO_VERTEX]) destroy_vbo(mat->vbo+VBO_VERTEX); if (mat->vbo[VBO_TEXTURE]) destroy_vbo(mat->vbo+VBO_TEXTURE); if (mat->vbo[VBO_NORMAL]) destroy_vbo(mat->vbo+VBO_NORMAL); } }
int main(void){ if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE) != 0){ fprintf(stderr, "Failed to initialize SDL: %s\n", SDL_GetError()); return 1; } SDL_WM_SetCaption("OpenGL test window", "OpenGL"); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_Surface *surface = SDL_SetVideoMode(400, 400, 32, SDL_OPENGL); if (surface == NULL) { fprintf(stderr, "Failed to initialize OpenGL: %s\n", SDL_GetError()); return 1; } GLenum err = glewInit(); if (GLEW_OK != err) { /* Problem: glewInit failed, something is seriously wrong. */ fprintf(stderr, "Failed to initialize GLEW: %s\n", glewGetErrorString(err)); return 1; } printf("OpenGL Version is %s\n", glGetString(GL_VERSION)); setup_rendering(); buffer_t buffer = create_vbo(10, 10); while(1) { //glScalef(1.0, 1.0, 1.1f); glRotatef(10, 0,0,1); glColor3f(1.0f, 0.0f, 0.0f); draw_vbo(buffer); glColor3f(1.0f, 1.0f, 0.0f); draw_vbo_raw(buffer); SDL_GL_SwapBuffers(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); SDL_Delay(500); if(handle_events() == 1) { destroy_vbo(buffer); SDL_Quit(); exit(0); } } }