ecere/gfx/OpenGLDispalyDriver: Fixed setting initial projection matrix; Emscripten...
authorJerome St-Louis <jerome@ecere.com>
Fri, 28 Nov 2014 23:09:20 +0000 (18:09 -0500)
committerJerome St-Louis <jerome@ecere.com>
Thu, 15 Oct 2015 00:19:27 +0000 (20:19 -0400)
- Code was somehow expecting the projection matrix to be selected by default

ecere/ecere.epj
ecere/src/gfx/3D/Object.ec
ecere/src/gfx/drivers/OpenGLDisplayDriver.ec

index 846d5b2..19e0b31 100644 (file)
@@ -448,7 +448,6 @@ from wherever you obtained them.
             "Debug" : true,
             "PreprocessorDefinitions" : [
                "ECERE_STATIC",
-               "ECERE_VANILLA",
                "NOBLENDING"
             ],
             "TargetType" : "StaticLibrary",
@@ -666,12 +665,6 @@ from wherever you obtained them.
                                  }
                               }
                            ]
-                        },
-                        {
-                           "Name" : "Emscripten",
-                           "Options" : {
-                              "ExcludeFromBuild" : true
-                           }
                         }
                      ]
                   },
index 57f78f7..56c5103 100644 (file)
@@ -1307,7 +1307,7 @@ private:
 
          if(flags.camera && cameraTarget)
          {
-            // DeterMine angle to look at target
+            // Determine angle to look at target
             Vector3D position, direction;
             if(flags.root || !parent)
                position = transform.position;
index 49ad50e..4c06cf0 100644 (file)
@@ -107,6 +107,12 @@ namespace gfx::drivers;
 
 #endif
 
+#if defined(__EMSCRIPTEN__)
+#define EM_MODE
+#endif
+
+#define EM_MODE
+
 #undef pointer
 
 import "Display"
@@ -1212,7 +1218,7 @@ public void glesTerminate()
 }
 
 static GLuint stippleTexture;
-#if defined(_GLES) || defined(__EMSCRIPTEN__)
+#if defined(_GLES) || defined(EM_MODE)
 static bool stippleEnabled;
 #endif
 
@@ -1244,7 +1250,7 @@ public void glesLineStipple( int i, unsigned short j )
 
 public void glesLightModeli( unsigned int pname, int param )
 {
-#if !defined(__EMSCRIPTEN__)
+#if !defined(EM_MODE)
    if(pname == GL_LIGHT_MODEL_TWO_SIDE)
       glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, param);
 #endif
@@ -1945,7 +1951,9 @@ class OpenGLDisplayDriver : DisplayDriver
          glShadeModel(GL_FLAT);
 
          // glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, true);
+#if !defined(EM_MODE)
          glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR);
+#endif
          glFogi(GL_FOG_MODE, GL_EXP);
          glFogf(GL_FOG_DENSITY, 0);
          glEnable(GL_NORMALIZE);
@@ -2857,7 +2865,7 @@ class OpenGLDisplayDriver : DisplayDriver
 
       glColor4fv(oglSurface.foreground);
       glBegin(GL_LINES);
-#if defined(_GLES) || defined(__EMSCRIPTEN__)
+#if defined(_GLES) || defined(EM_MODE)
       if(stippleEnabled)
       {
          glTexCoord2f(0.5f, 0);
@@ -2890,7 +2898,7 @@ class OpenGLDisplayDriver : DisplayDriver
       //Logf("Rectangle\n");
 
       glColor4fv(oglSurface.foreground);
-#if defined(_GLES) || defined(__EMSCRIPTEN__)
+#if defined(_GLES) || defined(EM_MODE)
       if(stippleEnabled)
       {
          glBegin(GL_LINES);
@@ -2940,7 +2948,7 @@ class OpenGLDisplayDriver : DisplayDriver
 
       glColor4fv(oglSurface.background);
 
-#ifdef __EMSCRIPTEN__
+#ifdef EM_MODE
       glBegin(GL_QUADS);
       glVertex2f(x1+surface.offset.x, y1+surface.offset.y);
       glVertex2f(x1+surface.offset.x, y2+surface.offset.y+1);
@@ -3122,7 +3130,7 @@ class OpenGLDisplayDriver : DisplayDriver
 
    void StretchDI(Display display, Surface surface, Bitmap bitmap, int dx, int dy, int sx, int sy, int w, int h, int sw, int sh)
    {
-#if !defined(__EMSCRIPTEN__)
+#if !defined(EM_MODE)
       float s2dw,s2dh,d2sw,d2sh;
       //bool flipX = false, flipY = false;
 
@@ -3224,7 +3232,7 @@ class OpenGLDisplayDriver : DisplayDriver
 
    void BlitDI(Display display, Surface surface, Bitmap bitmap, int dx, int dy, int sx, int sy, int w, int h)
    {
-#if !defined(__EMSCRIPTEN__)
+#if !defined(EM_MODE)
       //Logf("BlitDI\n");
 
       //Clip against the edges of the source
@@ -3386,7 +3394,7 @@ class OpenGLDisplayDriver : DisplayDriver
 
       if(stipple)
       {
-#if defined(_GLES) || defined(__EMSCRIPTEN__)
+#if defined(_GLES) || defined(EM_MODE)
          stippleEnabled = true;
          glesLineStipple(1, (uint16)stipple);
 #else
@@ -3396,7 +3404,7 @@ class OpenGLDisplayDriver : DisplayDriver
       }
       else
       {
-#if defined(_GLES) || defined(__EMSCRIPTEN__)
+#if defined(_GLES) || defined(EM_MODE)
          stippleEnabled = false;
          glMatrixMode(GL_TEXTURE);
          glLoadIdentity();
@@ -3447,8 +3455,8 @@ class OpenGLDisplayDriver : DisplayDriver
             break;
          case ambient:
          {
+#if !defined(EM_MODE)
             float ambient[4] = { ((Color)value).r/255.0f, ((Color)value).g/255.0f, ((Color)value).b/255.0f, 1.0f };
-#if !defined(__EMSCRIPTEN__)
             glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambient);
 #endif
             break;
@@ -3470,6 +3478,7 @@ class OpenGLDisplayDriver : DisplayDriver
 
    void SetLight(Display display, int id, Light light)
    {
+#if !defined(EM_MODE)
       //Logf("SetLight\n");
 
       if(light != null)
@@ -3616,11 +3625,13 @@ class OpenGLDisplayDriver : DisplayDriver
             position[1] = direction.y;
             position[2] = direction.z;
 
+            PrintLn("position");
             glLightfv(GL_LIGHT0 + id, GL_POSITION, position);
          }
       }
       else
          glDisable(GL_LIGHT0 + id);
+#endif
    }
 
    void SetCamera(Display display, Surface surface, Camera camera)
@@ -3646,7 +3657,10 @@ class OpenGLDisplayDriver : DisplayDriver
 
          // *** Projection Matrix ***
          if(!display.display3D.camera)
+         {
+            glMatrixMode(GL_PROJECTION);
             glPushMatrix();
+         }
          else
             glMatrixMode(GL_PROJECTION);
          if(display.display3D.collectingHits)
@@ -3692,8 +3706,10 @@ class OpenGLDisplayDriver : DisplayDriver
          // ...
 
          glEnable(GL_DEPTH_TEST);
+#if !defined(EM_MODE)
          glEnable(GL_LIGHTING);
          glShadeModel(GL_SMOOTH);
+#endif
          glDepthMask((byte)bool::true);
          oglDisplay.depthWrite = true;
 
@@ -3709,7 +3725,9 @@ class OpenGLDisplayDriver : DisplayDriver
          glDisable(GL_LIGHTING);
          glDisable(GL_FOG);
          glDisable(GL_TEXTURE_2D);
+#if !defined(EM_MODE)
          glShadeModel(GL_FLAT);
+#endif
          glEnable(GL_BLEND);
          glDisable(GL_MULTISAMPLE_ARB);
 
@@ -3731,12 +3749,16 @@ class OpenGLDisplayDriver : DisplayDriver
       // Basic Properties
       if(material.flags.doubleSided)
       {
+#if !defined(EM_MODE)
          glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, !material.flags.singleSideLight);
+#endif
          glDisable(GL_CULL_FACE);
       }
       else
       {
+#if !defined(EM_MODE)
          glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, bool::false);
+#endif
          glEnable(GL_CULL_FACE);
       }
 
@@ -3773,6 +3795,9 @@ class OpenGLDisplayDriver : DisplayDriver
       else
          glDisable(GL_TEXTURE_2D);
 
+#ifdef EM_MODE
+      glColor4f(material.diffuse.r, material.diffuse.g, material.diffuse.b, material.opacity);
+#else
       if(mesh.flags.colors)
       {
          glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
@@ -3800,6 +3825,7 @@ class OpenGLDisplayDriver : DisplayDriver
       }
 
       glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, &material.power);
+#endif
    }
 
    void FreeMesh(DisplaySystem displaySystem, Mesh mesh)
@@ -4041,7 +4067,7 @@ class OpenGLDisplayDriver : DisplayDriver
    {
       //Logf("SelectMesh\n");
 
-#if !defined( __ANDROID__) && !defined(__APPLE__)
+#if !defined( __ANDROID__) && !defined(__APPLE__) && !defined(__EMSCRIPTEN__)
 
 #if defined(__WIN32__)
       if(glUnlockArraysEXT)
@@ -4125,7 +4151,7 @@ class OpenGLDisplayDriver : DisplayDriver
                glDisableClientState(GL_COLOR_ARRAY);
          }
 
-#if !defined(__ANDROID__) && !defined(__APPLE__)
+#if !defined(__ANDROID__) && !defined(__APPLE__) && !defined(__EMSCRIPTEN__)
 
 #if defined(__WIN32__)
          if(glLockArraysEXT)