|
- // 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;
- }
|