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