#include "glWindow.h" //The attributes of the screen const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; const int SCREEN_BPP = 32; SDL_Surface *screen = NULL; //The event structure that will be used SDL_Event event; SDL_Thread *eventThread = NULL; SDL_Thread *paintThread = NULL; GLWindow* glWindow=NULL; bool quit; int main() { glWindow=new GLWindow(); glWindow->runGame(); return 0; } GLWindow::GLWindow() { if(init()) { printf("Error in init"); } } void GLWindow::runPaint() { while(!quit) { paintFrame(); SDL_Delay( 5 ); } } void GLWindow::paintFrame() { //glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); /*glBegin( GL_QUADS ); glColor4f( 1.0, 1.0, 1.0, 1.0 ); glVertex3f( 20,20,1 ); glVertex3f( 20,80,1 ); glVertex3f( 80,80,1 ); glVertex3f( 80,20,1 ); glEnd();*/ //Start quad printf(glGetError()+""); glBegin( GL_QUADS ); printf(glGetError()+""); //Set color to white glColor4f( 1.0, 1.0, 1.0, 1.0 ); printf(glGetError()+""); //Draw square glVertex3f( 20, 0, 0 ); glVertex3f( 80, 0, 0 ); glVertex3f( 80, 80, 0 ); glVertex3f( 20, 80, 0 ); printf(glGetError()+""); //End quad glEnd(); printf(glGetError()+""); //SDL_GL_SwapBuffers(); printf(glGetError()+""); } int runListener(void* data) { glWindow->runGame(); } int paintListener(void* data) { glWindow->runPaint(); } void GLWindow::runGame() { while(!quit) { runStep(); SDL_Delay( 10 ); } } void GLWindow::runStep() { } int eventListener( void *data ) { //While the program is not over while( true ) { //While there's an event to handle while( SDL_PollEvent( &event ) ) { //If the user has Xed out the window if( event.type == SDL_QUIT ) { printf("chansu"); quit=true; } } SDL_Delay( 10 ); } return 0; } int GLWindow::init() { //Initialize all SDL subsystems if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 ) { return 1; } //SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); //Set up the screen screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_OPENGL ); //If there was an error in setting up the screen if( screen == NULL ) { return 1; } glClearColor( 0, 0, 0, 0 ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho( 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, -1, 1 ); //Initialize modelview matrix glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); if( glGetError() != GL_NO_ERROR ) { return 1; } //Set the window caption SDL_WM_SetCaption( "Hello World", NULL ); //Create and run the thread eventThread = SDL_CreateThread( eventListener, NULL ); paintThread = SDL_CreateThread( paintListener, NULL ); return 0; } void GLWindow::cleanUp() { //Quit SDL SDL_Quit(); }