]> git.jsancho.org Git - lugaru.git/blobdiff - Source/OpenGL_Windows.cpp
Minor code simplifications
[lugaru.git] / Source / OpenGL_Windows.cpp
index 76f9777e402a7860c1399fbed70fa6e733c8683f..82364c1a3a4b162739e2ee0dc12963ef4ae90634 100644 (file)
@@ -196,10 +196,7 @@ static void GLAPIENTRY glDeleteTextures_doNothing(GLsizei n, const GLuint *textu
 
 void sdlGetCursorPos(POINT *pt)
 {
-    int x, y;
-    SDL_GetMouseState(&x, &y);
-    pt->x = x;
-    pt->y = y;
+    SDL_GetMouseState(&(pt->x), &(pt->y));
 }
 #define GetCursorPos(x) sdlGetCursorPos(x)
 #define SetCursorPos(x, y) SDL_WarpMouse(x, y)
@@ -297,7 +294,12 @@ void ShutdownDSp ()
 
 void DrawGL (Game & game)
 {
-       game.DrawGLScene();
+       if ( stereomode == stereoNone ) {
+               game.DrawGLScene(stereoCenter);
+       } else {
+               game.DrawGLScene(stereoLeft);
+               game.DrawGLScene(stereoRight);
+       }
 }
 
 
@@ -638,7 +640,8 @@ Boolean SetUp (Game & game)
     SDL_ShowCursor(0);
 
     SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
-
+    SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 1);
+    
     if (SDL_SetVideoMode(kContextWidth, kContextHeight, 0, sdlflags) == NULL)
     {
         fprintf(stderr, "SDL_SetVideoMode() failed: %s\n", SDL_GetError());
@@ -687,7 +690,6 @@ Boolean SetUp (Game & game)
        glDisable( GL_FOG);
        glDisable( GL_LIGHTING);
        glDisable( GL_LOGIC_OP);
-       glDisable( GL_STENCIL_TEST);
        glDisable( GL_TEXTURE_1D);
        glDisable( GL_TEXTURE_2D);
        glPixelTransferi( GL_MAP_COLOR, GL_FALSE);
@@ -729,6 +731,13 @@ Boolean SetUp (Game & game)
        game.newscreenwidth=screenwidth;
        game.newscreenheight=screenheight;
 
+       if ( CanInitStereo(stereomode) ) {
+               InitStereo(stereomode);
+       } else {
+               fprintf(stderr, "Failed to initialize stereo, disabling.\n");
+               stereomode = stereoNone;
+       }
+
        game.InitGame();
 
        return true;
@@ -784,9 +793,9 @@ void DoFrameRate (int update)
                deltaTime /= 1000.0;
 
        multiplier=deltaTime;
-       if(multiplier<.001)multiplier=.001;
-       if(multiplier>10)multiplier=10;
-       if(update)frametime = currTime; // reset for next time interval
+       if(multiplier<.001) multiplier=.001;
+       if(multiplier>10) multiplier=10;
+       if(update) frametime = currTime;        // reset for next time interval
 
        deltaTime = (float) AbsoluteDeltaToDuration (currTime, time);
 
@@ -1105,7 +1114,12 @@ int main(int argc, char **argv)
                                        }
 
                                        // game is not in focus, give CPU time to other apps by waiting for messages instead of 'peeking'
-                    STUBBED("give up CPU but sniff the event queue");
+                                       SDL_ActiveEvent evt;
+                                       SDL_WaitEvent((SDL_Event*)&evt);
+                                       if (evt.type == SDL_ACTIVEEVENT && evt.gain == 1)
+                                               gameFocused = true;
+                                       else if (evt.type == SDL_QUIT)
+                                               gDone = true;
                                }
                        }
 
@@ -1224,25 +1238,15 @@ int main(int argc, char **argv)
 
        bool LoadImage(const char * fname, TGAImageRec & tex)
        {
-               bool res = true;
-
                if ( tex.data == NULL )
-               {
                        return false;
-               }
-
-       
-        res = load_image(fname, tex);
-    
-
-               return res;
+               else
+                       return load_image(fname, tex);
        }
 
        void ScreenShot(const char * fname)
        {
-  
         save_image(fname);
-  
        }