From 2608d3d21bcf07316d64009497646a6c3a87b577 Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Mon, 21 Sep 2015 00:30:58 +0900 Subject: [PATCH] ecere: Fixes to build branch for Android - Enabling SHADERS - Re-enabling Internationalization --- ecere/ecere.epj | 36 ++++++++++++++- ecere/src/gfx/drivers/OpenGLDisplayDriver.ec | 66 ++++++++++++++++++++++++---- ecere/src/gfx/drivers/gl3/egl.ec | 55 +++++------------------ ecere/src/gfx/drivers/gl3/glab.ec | 10 ++++- ecere/src/gfx/drivers/gl3/immediate.ec | 8 ++-- ecere/src/gfx/drivers/gl3/matrixStack.ec | 6 ++- ecere/src/gfx/drivers/gl3/shading.ec | 16 ++++++- ecere/src/sys/i18n.ec | 2 +- 8 files changed, 135 insertions(+), 64 deletions(-) diff --git a/ecere/ecere.epj b/ecere/ecere.epj index 16e08b8..3bf76a6 100644 --- a/ecere/ecere.epj +++ b/ecere/ecere.epj @@ -984,6 +984,12 @@ from wherever you obtained them. "Options" : { "ExcludeFromBuild" : false } + }, + { + "Name" : "Android", + "Options" : { + "ExcludeFromBuild" : false + } } ] }, @@ -1013,6 +1019,12 @@ from wherever you obtained them. "Options" : { "ExcludeFromBuild" : false } + }, + { + "Name" : "Android", + "Options" : { + "ExcludeFromBuild" : false + } } ] }, @@ -1042,11 +1054,27 @@ from wherever you obtained them. "Options" : { "ExcludeFromBuild" : false } + }, + { + "Name" : "Android", + "Options" : { + "ExcludeFromBuild" : false + } } ] }, "wglDefs.h", - "egl.ec", + { + "FileName" : "egl.ec", + "Configurations" : [ + { + "Name" : "Android", + "Options" : { + "ExcludeFromBuild" : false + } + } + ] + }, { "FileName" : "shading.ec", "Configurations" : [ @@ -1073,6 +1101,12 @@ from wherever you obtained them. "Options" : { "ExcludeFromBuild" : false } + }, + { + "Name" : "Android", + "Options" : { + "ExcludeFromBuild" : false + } } ] }, diff --git a/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec b/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec index a6dab76..23b8479 100644 --- a/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec +++ b/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec @@ -3,7 +3,7 @@ namespace gfx::drivers; #if defined(_GLES) #define ES1_1 #else -// #define SHADERS + #define SHADERS #endif #define GL_BGRA_EXT 0x80E1 @@ -16,6 +16,10 @@ namespace gfx::drivers; # endif #endif +#if defined(__ANDROID__) || defined(__ODROID__) +import "egl" +#endif + import "glab" import "immediate" import "matrixStack" @@ -143,12 +147,7 @@ import "shading" #include //#include - //#include - //#include - //#include - - //#include #include #include @@ -909,11 +908,53 @@ class OpenGLDisplayDriver : DisplayDriver } #elif defined(__unix__) || defined(__APPLE__) vboAvailable = true; - #if defined(__ANDROID__) + #if defined(__ANDROID__) || defined(__ODROID__) + #if defined(__ANDROID__) egl_init_display(guiApp.desktop.windowHandle); - #elif defined(__ODROID__) + #elif defined(__ODROID__) egl_init_display((uint)displaySystem.window); CheckExtensions(oglSystem); + #endif + + // TODO: Clean this up? Needed here? + glEnableClientState(GL_VERTEX_ARRAY); + /* + // Initialize GL state. + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); + glEnable(GL_CULL_FACE); + glShadeModel(GL_SMOOTH); + glDisable(GL_DEPTH_TEST); + */ + glDisable(GL_CULL_FACE); + glDisable(GL_DEPTH_TEST); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + + matrixStack[0][0].Identity(); + matrixStack[1][0].Identity(); + matrixStack[2][0].Identity(); + + glmsMatrixMode(GL_MODELVIEW); + glScaled(1.0, 1.0, -1.0); + glmsMatrixMode(GL_PROJECTION); + glShadeModel(GL_FLAT); + + glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); + glFogi(GL_FOG_MODE, GL_EXP); + glFogf(GL_FOG_DENSITY, 0); + glEnable(GL_NORMALIZE); + glDepthFunc(GL_LESS); + glClearDepth(1.0); + glDisable(GL_MULTISAMPLE_ARB); + + glViewport(0,0,eglWidth,eglHeight); + glmsLoadIdentity(); + glOrtho(0,eglWidth,eglHeight,0,0.0,1.0); + + glabCurArrayBuffer = 0; + glabCurElementBuffer = 0; + result = true; #elif defined(__EMSCRIPTEN__) if(glfwInit() == GL_TRUE) @@ -979,6 +1020,11 @@ class OpenGLDisplayDriver : DisplayDriver void DestroyDisplaySystem(DisplaySystem displaySystem) { OGLSystem oglSystem = displaySystem.driverData; + if(stippleTexture) + { + glDeleteTextures(1, &stippleTexture); + stippleTexture = 0; + } #if defined(__WIN32__) wglMakeCurrent( null, null ); @@ -1087,10 +1133,12 @@ class OpenGLDisplayDriver : DisplayDriver #endif if(result) { +#if !defined(__ANDROID__) && !defined(__EMSCRIPTEN__) && !defined(__ODROID__) ogl_LoadFunctions(); CheckExtensions(oglSystem); vboAvailable = glBindBuffer != null; setupDebugging(); +#endif #ifdef SHADERS loadShaders("<:ecere>shaders/fixed.vertex", "<:ecere>shaders/fixed.frag"); #endif @@ -1658,7 +1706,7 @@ class OpenGLDisplayDriver : DisplayDriver SwapBuffers(oglDisplay.hdc); #elif defined(__unix__) || defined(__APPLE__) #if defined(__ANDROID__) || defined(__ODROID__) - eglSwapBuffers(eglDisplay, eglSurface); + egl_swap_buffers(); #elif defined(__EMSCRIPTEN__) glfwSwapBuffers(); #else diff --git a/ecere/src/gfx/drivers/gl3/egl.ec b/ecere/src/gfx/drivers/gl3/egl.ec index 2624c26..48bbb35 100644 --- a/ecere/src/gfx/drivers/gl3/egl.ec +++ b/ecere/src/gfx/drivers/gl3/egl.ec @@ -1,5 +1,7 @@ #if defined(__ANDROID__) || defined(__ODROID__) +import "instance" + #include EGLDisplay eglDisplay; @@ -8,9 +10,9 @@ EGLContext eglContext; int eglWidth, eglHeight; #if defined(__ANDROID__) -static bool egl_init_display(ANativeWindow* window) +bool egl_init_display(ANativeWindow* window) #else -static bool egl_init_display(uint window) +bool egl_init_display(uint window) #endif { const EGLint attribs[] = @@ -50,53 +52,11 @@ static bool egl_init_display(uint window) eglWidth = w; eglHeight = h; - glEnableClientState(GL_VERTEX_ARRAY); - /* - // Initialize GL state. - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); - glEnable(GL_CULL_FACE); - glShadeModel(GL_SMOOTH); - glDisable(GL_DEPTH_TEST); - */ - glDisable(GL_CULL_FACE); - glDisable(GL_DEPTH_TEST); - - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_BLEND); - - matrixStack[0][0].Identity(); - matrixStack[1][0].Identity(); - matrixStack[2][0].Identity(); - - glmsMatrixMode(GL_MODELVIEW); - glScaled(1.0, 1.0, -1.0); - glmsMatrixMode(GL_PROJECTION); - glShadeModel(GL_FLAT); - - glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR); - glFogi(GL_FOG_MODE, GL_EXP); - glFogf(GL_FOG_DENSITY, 0); - glEnable(GL_NORMALIZE); - glDepthFunc(GL_LESS); - glClearDepth(1.0); - glDisable(GL_MULTISAMPLE_ARB); - - glViewport(0,0,w,h); - glmsLoadIdentity(); - glOrtho(0,w,h,0,0.0,1.0); - - glabCurArrayBuffer = 0; - glabCurElementBuffer = 0; return true; } -static void egl_term_display() +void egl_term_display() { - if(stippleTexture) - { - glDeleteTextures(1, &stippleTexture); - stippleTexture = 0; - } if(eglDisplay != EGL_NO_DISPLAY) { eglMakeCurrent(eglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); @@ -111,4 +71,9 @@ static void egl_term_display() eglSurface = EGL_NO_SURFACE; } +void egl_swap_buffers() +{ + eglSwapBuffers(eglDisplay, eglSurface); +} + #endif diff --git a/ecere/src/gfx/drivers/gl3/glab.ec b/ecere/src/gfx/drivers/gl3/glab.ec index 1e054ee..63d449e 100644 --- a/ecere/src/gfx/drivers/gl3/glab.ec +++ b/ecere/src/gfx/drivers/gl3/glab.ec @@ -3,10 +3,15 @@ #if defined(_GLES) #define ES1_1 #else -// #define SHADERS + #define SHADERS #endif -#if !defined(__ANDROID__) && !defined(__EMSCRIPTEN__) && !defined(__ODROID__) +#if defined(__ANDROID__) || defined(__EMSCRIPTEN__) || defined(__ODROID__) + #include + + #define GL_INT 0x1404 + #define GL_DOUBLE 0x140A +#else # if defined(SHADERS) # include "gl_core_3_3.h" # else @@ -14,6 +19,7 @@ # endif #endif +import "immediate" import "Display" // Kept public for now diff --git a/ecere/src/gfx/drivers/gl3/immediate.ec b/ecere/src/gfx/drivers/gl3/immediate.ec index e6b67b6..c7ab495 100644 --- a/ecere/src/gfx/drivers/gl3/immediate.ec +++ b/ecere/src/gfx/drivers/gl3/immediate.ec @@ -1,10 +1,12 @@ // OpenGL Immediate Mode Transition Kit #ifndef _GLES -// #define SHADERS + #define SHADERS #endif -#if !defined(__ANDROID__) && !defined(__EMSCRIPTEN__) && !defined(__ODROID__) +#if defined(__ANDROID__) || defined(__EMSCRIPTEN__) || defined(__ODROID__) + #include +#else # if defined(SHADERS) # include "gl_core_3_3.h" # else @@ -12,7 +14,7 @@ # endif #endif -import "Display" +import "glab" #ifdef SHADERS diff --git a/ecere/src/gfx/drivers/gl3/matrixStack.ec b/ecere/src/gfx/drivers/gl3/matrixStack.ec index c48eff1..e408bd9 100644 --- a/ecere/src/gfx/drivers/gl3/matrixStack.ec +++ b/ecere/src/gfx/drivers/gl3/matrixStack.ec @@ -1,10 +1,12 @@ // Matrix Stack Implementation #ifndef _GLES -// #define SHADERS + #define SHADERS #endif -#if !defined(__ANDROID__) && !defined(__EMSCRIPTEN__) && !defined(__ODROID__) +#if defined(__ANDROID__) || defined(__EMSCRIPTEN__) || defined(__ODROID__) + #include +#else # if defined(SHADERS) # include "gl_core_3_3.h" # else diff --git a/ecere/src/gfx/drivers/gl3/shading.ec b/ecere/src/gfx/drivers/gl3/shading.ec index 0ec7c4b..83ccb02 100644 --- a/ecere/src/gfx/drivers/gl3/shading.ec +++ b/ecere/src/gfx/drivers/gl3/shading.ec @@ -1,6 +1,18 @@ import "Display" +import "matrixStack" -#if !defined(__ANDROID__) && !defined(__EMSCRIPTEN__) && !defined(__ODROID__) +#ifndef _GLES +#define SHADERS +#endif + +#if defined(SHADERS) + +#if defined(__ANDROID__) || defined(__EMSCRIPTEN__) || defined(__ODROID__) + #include + + #define GL_INT 0x1404 + #define GL_DOUBLE 0x140A +#else # if defined(SHADERS) # include "gl_core_3_3.h" # else @@ -331,3 +343,5 @@ void loadShaders(const String vertexShaderFile, const String fragmentShaderFile) shader_color(1.0, 1.0, 1.0, 1.0); } } + +#endif diff --git a/ecere/src/sys/i18n.ec b/ecere/src/sys/i18n.ec index 004b3b7..9df3ac7 100644 --- a/ecere/src/sys/i18n.ec +++ b/ecere/src/sys/i18n.ec @@ -128,7 +128,7 @@ public dllexport void LoadTranslatedStrings(const String moduleName, const char } } - if(0) //f) + if(f) { uint magic = 0; f.Read(&magic, sizeof(uint), 1); -- 1.8.3.1