| @@ -0,0 +1,161 @@ | |||
| // Test stuff | |||
| #ifdef WIN32 | |||
| # define WIN32_LEAN_AND_MEAN | |||
| # include <windows.h> | |||
| #endif | |||
| #if defined __APPLE__ && defined __MACH__ | |||
| # include <OpenGL/gl.h> | |||
| # include <OpenGL/glu.h> | |||
| #else | |||
| # include <GL/gl.h> | |||
| # include <GL/glu.h> | |||
| #endif | |||
| #include <SDL.h> | |||
| #include <SDL_image.h> | |||
| float xrot, yrot, zrot; | |||
| /* Storage for one texture */ | |||
| GLuint texture[1]; | |||
| // Load Bitmaps And Convert To Textures | |||
| void LoadGLTextures(void) | |||
| { | |||
| SDL_Surface *image1 = IMG_Load("art/test/groundtest.png"); | |||
| if (!image1) | |||
| { | |||
| SDL_Quit(); | |||
| exit(1); | |||
| } | |||
| glGenTextures(1, &texture[0]); | |||
| glBindTexture(GL_TEXTURE_2D, texture[0]); | |||
| glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); | |||
| glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); | |||
| glTexImage2D(GL_TEXTURE_2D, 0, 4, image1->w, image1->h, 0, | |||
| GL_RGBA, GL_UNSIGNED_BYTE, image1->pixels); | |||
| }; | |||
| void InitGL(int Width, int Height) | |||
| { | |||
| glViewport(0, 0, Width, Height); | |||
| LoadGLTextures(); | |||
| glEnable(GL_TEXTURE_2D); | |||
| glClearColor(0.0f, 0.0f, 1.0f, 0.0f); | |||
| glClearDepth(1.0); | |||
| glDepthFunc(GL_LESS); | |||
| glEnable(GL_DEPTH_TEST); | |||
| glShadeModel(GL_SMOOTH); | |||
| glMatrixMode(GL_PROJECTION); | |||
| glLoadIdentity(); | |||
| gluPerspective(45.0f, (GLfloat)Width / (GLfloat)Height, 0.1f, 100.0f); | |||
| glMatrixMode(GL_MODELVIEW); | |||
| } | |||
| /* The main drawing function. */ | |||
| void DrawGLScene() | |||
| { | |||
| glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); | |||
| glLoadIdentity(); | |||
| glTranslatef(0.0f, 0.0f, -5.0f); | |||
| glRotatef(xrot, 1.0f, 0.0f, 0.0f); | |||
| glRotatef(yrot, 0.0f, 1.0f, 0.0f); | |||
| glRotatef(zrot, 0.0f, 0.0f, 1.0f); | |||
| glBindTexture(GL_TEXTURE_2D, texture[0]); | |||
| glBegin(GL_QUADS); | |||
| glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); | |||
| glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); | |||
| glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); | |||
| glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); | |||
| glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); | |||
| glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); | |||
| glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); | |||
| glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); | |||
| glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); | |||
| glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f); | |||
| glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f); | |||
| glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); | |||
| glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f); | |||
| glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f); | |||
| glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); | |||
| glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); | |||
| glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); | |||
| glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); | |||
| glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); | |||
| glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); | |||
| glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); | |||
| glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); | |||
| glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); | |||
| glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); | |||
| glEnd(); | |||
| xrot += 0.2f; | |||
| yrot += 0.2f; | |||
| zrot += 0.2f; | |||
| SDL_GL_SwapBuffers(); | |||
| } | |||
| int main(int argc, char **argv) | |||
| { | |||
| int done; | |||
| /* Initialize SDL for video output */ | |||
| if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) | |||
| { | |||
| fprintf(stderr, "Unable to initialize SDL: %s\n", SDL_GetError()); | |||
| exit(1); | |||
| } | |||
| /* Create a 640x480 OpenGL screen */ | |||
| if ( SDL_SetVideoMode(640, 480, 0, SDL_OPENGL) == NULL ) | |||
| { | |||
| fprintf(stderr, "Unable to create OpenGL screen: %s\n", SDL_GetError()); | |||
| SDL_Quit(); | |||
| exit(2); | |||
| } | |||
| /* Set the title bar in environments that support it */ | |||
| SDL_WM_SetCaption("Deus Hax", NULL); | |||
| /* Loop, drawing and checking events */ | |||
| InitGL(640, 480); | |||
| done = 0; | |||
| while ( !done ) | |||
| { | |||
| DrawGLScene(); | |||
| /* This could go in a separate function */ | |||
| SDL_Event event; | |||
| while ( SDL_PollEvent(&event) ) | |||
| { | |||
| if ( event.type == SDL_QUIT ) | |||
| done = 1; | |||
| if ( event.type == SDL_KEYDOWN ) | |||
| if ( event.key.keysym.sym == SDLK_ESCAPE ) | |||
| done = 1; | |||
| } | |||
| } | |||
| SDL_Quit(); | |||
| return 1; | |||
| } | |||