From: Jerome St-Louis Date: Fri, 28 Nov 2014 23:09:20 +0000 (-0500) Subject: ecere/gfx/OpenGLDispalyDriver: Fixed setting initial projection matrix; Emscripten... X-Git-Url: https://ecere.com/cgi-bin/gitweb.cgi?p=sdk;a=commitdiff_plain;h=872e6a3ca9320190c3bd8bf5fc299e7805963317 ecere/gfx/OpenGLDispalyDriver: Fixed setting initial projection matrix; Emscripten tweaks - Code was somehow expecting the projection matrix to be selected by default --- diff --git a/ecere/ecere.epj b/ecere/ecere.epj index 846d5b2..19e0b31 100644 --- a/ecere/ecere.epj +++ b/ecere/ecere.epj @@ -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 - } } ] }, diff --git a/ecere/src/gfx/3D/Object.ec b/ecere/src/gfx/3D/Object.ec index 57f78f7..56c5103 100644 --- a/ecere/src/gfx/3D/Object.ec +++ b/ecere/src/gfx/3D/Object.ec @@ -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; diff --git a/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec b/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec index 49ad50e..4c06cf0 100644 --- a/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec +++ b/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec @@ -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)