diff options
Diffstat (limited to 'objloader.c')
-rw-r--r-- | objloader.c | 70 |
1 files changed, 51 insertions, 19 deletions
diff --git a/objloader.c b/objloader.c index 1b2ba67..63cf273 100644 --- a/objloader.c +++ b/objloader.c @@ -18,6 +18,13 @@ #include "math3d.h" #include "obj.h" +/* function prototypes */ +static void resize(int, int); +static void setup_opengl(ObjModel *); +static void process_events(void); +static void draw_ground(void); +static void render(ObjModel *); + /* global */ int program_running = 1; @@ -40,7 +47,7 @@ static void resize(int w, int h) glLoadIdentity(); /* this needs to be ran again, glut does it for you I suppose */ - SDL_SetVideoMode(w, h, 32, SDL_OPENGL | SDL_GL_DOUBLEBUFFER | SDL_RESIZABLE); + SDL_SetVideoMode(w, h, 32, SDL_OPENGL | SDL_RESIZABLE); } static void setup_opengl(ObjModel *model) @@ -106,7 +113,7 @@ static void setup_opengl(ObjModel *model) } /* process SDL events */ -void process_events() +static void process_events(void) { SDL_Event event; SDLKey sym; @@ -146,7 +153,7 @@ static void draw_ground(void) glEnd(); } -void render(ObjModel *model) +static void render(ObjModel *model) { /* clear the window with current clearing color */ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -159,22 +166,41 @@ void render(ObjModel *model) int i; for (i = 0; i < model->nFace; i++) { - glNormal3f(model->NormalArray[model->FaceArray[i].Normal[0] - 1].x, model->NormalArray[model->FaceArray[i].Normal[0] - 1].y, model->NormalArray[model->FaceArray[i].Normal[0] - 1].z ); - glTexCoord2f(model->TexCoordArray[model->FaceArray[i].TexCoord[0] - 1].u, model->TexCoordArray[model->FaceArray[i].TexCoord[0] - 1].v); - glVertex3f(model->VertexArray[model->FaceArray[i].Vertex[0] - 1].x, model->VertexArray[model->FaceArray[i].Vertex[0] - 1].y, model->VertexArray[model->FaceArray[i].Vertex[0] - 1].z ); - - glNormal3f(model->NormalArray[model->FaceArray[i].Normal[1] - 1].x, model->NormalArray[model->FaceArray[i].Normal[1] - 1].y, model->NormalArray[model->FaceArray[i].Normal[1] - 1].z ); - glTexCoord2f(model->TexCoordArray[model->FaceArray[i].TexCoord[1] - 1].u, model->TexCoordArray[model->FaceArray[i].TexCoord[1] - 1].v); - glVertex3f(model->VertexArray[model->FaceArray[i].Vertex[1] - 1].x, model->VertexArray[model->FaceArray[i].Vertex[1] - 1].y, model->VertexArray[model->FaceArray[i].Vertex[1] - 1].z ); + glNormal3f(model->NormalArray[model->FaceArray[i].Normal[0] - 1].x, + model->NormalArray[model->FaceArray[i].Normal[0] - 1].y, + model->NormalArray[model->FaceArray[i].Normal[0] - 1].z ); + glTexCoord2f(model->TexCoordArray[model->FaceArray[i].TexCoord[0] - 1].u, + model->TexCoordArray[model->FaceArray[i].TexCoord[0] - 1].v); + glVertex3f(model->VertexArray[model->FaceArray[i].Vertex[0] - 1].x, + model->VertexArray[model->FaceArray[i].Vertex[0] - 1].y, + model->VertexArray[model->FaceArray[i].Vertex[0] - 1].z ); - glNormal3f(model->NormalArray[model->FaceArray[i].Normal[2] - 1].x, model->NormalArray[model->FaceArray[i].Normal[2] - 1].y, model->NormalArray[model->FaceArray[i].Normal[2] - 1].z ); - glTexCoord2f(model->TexCoordArray[model->FaceArray[i].TexCoord[2] - 1].u, model->TexCoordArray[model->FaceArray[i].TexCoord[2] - 1].v); - glVertex3f(model->VertexArray[model->FaceArray[i].Vertex[2] - 1].x, model->VertexArray[model->FaceArray[i].Vertex[2] - 1].y, model->VertexArray[model->FaceArray[i].Vertex[2] - 1].z ); + glNormal3f(model->NormalArray[model->FaceArray[i].Normal[1] - 1].x, + model->NormalArray[model->FaceArray[i].Normal[1] - 1].y, + model->NormalArray[model->FaceArray[i].Normal[1] - 1].z ); + glTexCoord2f(model->TexCoordArray[model->FaceArray[i].TexCoord[1] - 1].u, + model->TexCoordArray[model->FaceArray[i].TexCoord[1] - 1].v); + glVertex3f(model->VertexArray[model->FaceArray[i].Vertex[1] - 1].x, + model->VertexArray[model->FaceArray[i].Vertex[1] - 1].y, + model->VertexArray[model->FaceArray[i].Vertex[1] - 1].z ); - glNormal3f(model->NormalArray[model->FaceArray[i].Normal[3] - 1].x, model->NormalArray[model->FaceArray[i].Normal[3] - 1].y, model->NormalArray[model->FaceArray[i].Normal[3] - 1].z ); - glTexCoord2f(model->TexCoordArray[model->FaceArray[i].TexCoord[3] - 1].u, model->TexCoordArray[model->FaceArray[i].TexCoord[3] - 1].v); - glVertex3f(model->VertexArray[model->FaceArray[i].Vertex[3] - 1].x, model->VertexArray[model->FaceArray[i].Vertex[3] - 1].y, model->VertexArray[model->FaceArray[i].Vertex[3] - 1].z ); + glNormal3f(model->NormalArray[model->FaceArray[i].Normal[2] - 1].x, + model->NormalArray[model->FaceArray[i].Normal[2] - 1].y, + model->NormalArray[model->FaceArray[i].Normal[2] - 1].z ); + glTexCoord2f(model->TexCoordArray[model->FaceArray[i].TexCoord[2] - 1].u, + model->TexCoordArray[model->FaceArray[i].TexCoord[2] - 1].v); + glVertex3f(model->VertexArray[model->FaceArray[i].Vertex[2] - 1].x, + model->VertexArray[model->FaceArray[i].Vertex[2] - 1].y, + model->VertexArray[model->FaceArray[i].Vertex[2] - 1].z ); + glNormal3f(model->NormalArray[model->FaceArray[i].Normal[3] - 1].x, + model->NormalArray[model->FaceArray[i].Normal[3] - 1].y, + model->NormalArray[model->FaceArray[i].Normal[3] - 1].z ); + glTexCoord2f(model->TexCoordArray[model->FaceArray[i].TexCoord[3] - 1].u, + model->TexCoordArray[model->FaceArray[i].TexCoord[3] - 1].v); + glVertex3f(model->VertexArray[model->FaceArray[i].Vertex[3] - 1].x, + model->VertexArray[model->FaceArray[i].Vertex[3] - 1].y, + model->VertexArray[model->FaceArray[i].Vertex[3] - 1].z ); } glEnd(); glPopMatrix(); @@ -183,7 +209,7 @@ void render(ObjModel *model) SDL_GL_SwapBuffers(); } -int main(void) +int main(int argc, char **argv) { SDL_Surface *screen; @@ -194,9 +220,15 @@ int main(void) } atexit(SDL_Quit); SDL_WM_SetCaption("OBJ Loader", NULL); + + SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); - if ((screen = SDL_SetVideoMode(640, 480, 32, SDL_OPENGL | SDL_GL_DOUBLEBUFFER - | SDL_RESIZABLE)) == NULL) + if ((screen = SDL_SetVideoMode(640, 480, 32, SDL_OPENGL | SDL_RESIZABLE)) == NULL) { fprintf(stderr, "unable to set video mode: %s\n", SDL_GetError()); exit(-1); |