From 198feab3c8edd9bc6863cf7a8d7484331fcb3ec4 Mon Sep 17 00:00:00 2001 From: Kyle K Date: Mon, 17 Jan 2011 20:35:59 -0600 Subject: add mingw32 target --- mingw32 | 27 ++++++++++++++++++++++++ objloader.c | 70 ++++++++++++++++++++++++++++++++++++++++++++----------------- 2 files changed, 78 insertions(+), 19 deletions(-) create mode 100644 mingw32 diff --git a/mingw32 b/mingw32 new file mode 100644 index 0000000..f5c86f2 --- /dev/null +++ b/mingw32 @@ -0,0 +1,27 @@ +PROG = objloader +OBJS = $(PROG).o obj.o math3d.o +CC = gcc +DBGFLAGS = -g -O0 +ifdef DEBUG + CFLAGS = $(DBGFLAGS) -Wall -std=c99 +else + CFLAGS = -Wall -std=c99 -O2 -march=native -mtune=native +endif +LDFLAGS = -lglew32 -lopengl32 -lglu32 -lm -lfreeglut -lmingw32 -lsdlmain -lsdl -lsdl_image -mwindows + +$(PROG): $(OBJS) + $(CC) -o $(PROG) $(OBJS) $(LDFLAGS) + +$(PROG).o: $(PROG).c math3d.h + $(CC) -c $(CFLAGS) $(PROG).c + +math3d.o: math3d.c math3d.h + $(CC) -c $(CFLAGS) math3d.c + +obj.o: obj.c obj.h + $(CC) -c $(CFLAGS) obj.c + +.PHONY: clean + +clean: + rm -f *.o ./$(PROG).exe 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); -- cgit v1.2.3