]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/main.cxx
Turn back to default lighting when specular-highlight gets disabled
[flightgear.git] / src / Main / main.cxx
index 82d9de780726bf0a69e803292c5af1861dbbf300..4332c28cda376b26d4dd27de775634bcf292d68b 100644 (file)
@@ -43,6 +43,7 @@
 
 #include <plib/ssg.h>
 #include <plib/pu.h>
+#include <plib/netSocket.h>
 
 #include <simgear/screen/extensions.hxx>
 #include <simgear/scene/material/matlib.hxx>
 #include "splash.hxx"
 #include "fg_commands.hxx"
 #include "fg_io.hxx"
-
-
-glPointParameterfProc glPointParameterfPtr = 0;
-glPointParameterfvProc glPointParameterfvPtr = 0;
-bool glPointParameterIsSupported = false;
+#include "main.hxx"
 
 float default_attenuation[3] = {1.0, 0.0, 0.0};
-//Required for using GL_extensions
-void fgLoadDCS (void);
-void fgUpdateDCS (void);
 ssgSelector *ship_sel=NULL;
 // upto 32 instances of a same object can be loaded.
 ssgTransform *ship_pos[32];
@@ -126,6 +120,10 @@ float scene_farplane = 120000.0f;
 
 static double delta_time_sec = 0.0;
 
+glPointParameterfProc glPointParameterfPtr = 0;
+glPointParameterfvProc glPointParameterfvPtr = 0;
+bool glPointParameterIsSupported = false;
+
 
 #ifdef FG_WEATHERCM
 #  include <WeatherCM/FGLocalWeatherDatabase.h>
@@ -335,6 +333,12 @@ void trRenderFrame( void ) {
     glLightModelfv( GL_LIGHT_MODEL_AMBIENT, black );
     glLightModeli( GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE );
 
+    if (fgGetBool("/sim/rendering/specular-highlight")) {
+        glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR);
+    } else {
+        glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SINGLE_COLOR);
+    }
+
     ssgGetLight( 0 ) -> setColour( GL_AMBIENT, l->scene_ambient );
 
     // texture parameters
@@ -611,6 +615,13 @@ void fgRenderFrame() {
         // a completely dark scene.  So, we set GL_LIGHT_MODEL_AMBIENT
         // explicitely to black.
         glLightModelfv( GL_LIGHT_MODEL_AMBIENT, black );
+        if (fgGetBool("/sim/rendering/specular-highlight")) {
+            glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL,
+                          GL_SEPARATE_SPECULAR_COLOR);
+        } else {
+            glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL,
+                         GL_SINGLE_COLOR);
+        }
 
         ssgGetLight( 0 ) -> setColour( GL_AMBIENT, l->scene_ambient );
         ssgGetLight( 0 ) -> setColour( GL_DIFFUSE, l->scene_diffuse );