patch for android w/ gles2 crash
Posted: Sun Jan 20, 2013 5:33 am
My very first contribution to irrlicht! ^_^
this is for https://irrlicht.svn.sourceforge.net/sv ... es/ogl-es/
Code: Select all
Index: source/Irrlicht/CIrrDeviceAndroid.cpp
===================================================================
--- source/Irrlicht/CIrrDeviceAndroid.cpp (revision 4446)
+++ source/Irrlicht/CIrrDeviceAndroid.cpp (working copy)
@@ -90,15 +90,17 @@
// Create cursor control
CursorControl = new CCursorControl(this);
+ // This step needs to be done before creating the driver for Android in order to be able to load the GLES2 shaders from the media folder
+ io::CAndroidAssetFileArchive *assets = io::createAndroidAssetFileArchive(false, false);
+ assets->addDirectory("media");
+ FileSystem->addFileArchive(assets);
+
// Create the driver.
createDriver();
if (VideoDriver)
createGUIAndScene();
- io::CAndroidAssetFileArchive *assets = io::createAndroidAssetFileArchive(false, false);
- assets->addDirectory("media");
- FileSystem->addFileArchive(assets);
// TODO
//
// if engine->app->savedState is not NULL then use postEventFromUser()
Index: source/Irrlicht/COGLES2Driver.cpp
===================================================================
--- source/Irrlicht/COGLES2Driver.cpp (revision 4446)
+++ source/Irrlicht/COGLES2Driver.cpp (working copy)
@@ -26,6 +26,9 @@
#else
#include <EGL/egl.h>
#include <GLES2/gl2.h>
+#ifdef _IRR_COMPILE_WITH_ANDROID_DEVICE_
+#include "android_native_app_glue.h"
+#endif
#endif
namespace irr
@@ -68,6 +71,9 @@
EglDisplay = eglGetDisplay((NativeDisplayType)ExposedData.OpenGLLinux.X11Display);
#elif defined(_IRR_COMPILE_WITH_IPHONE_DEVICE_)
Device = device;
+#elif defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_)
+ EglWindow = ((struct android_app *)(params.PrivateData))->window;
+ EglDisplay = EGL_NO_DISPLAY;
#endif
#ifdef EGL_VERSION_1_0
if (EglDisplay == EGL_NO_DISPLAY)
Index: include/IrrCompileConfig.h
===================================================================
--- include/IrrCompileConfig.h (revision 4446)
+++ include/IrrCompileConfig.h (working copy)
@@ -206,6 +206,8 @@
#ifndef IRR_OGLES2_SHADER_PATH
#ifdef _IRR_COMPILE_WITH_IPHONE_DEVICE_
#define IRR_OGLES2_SHADER_PATH ""
+#elif defined(_IRR_ANDROID_PLATFORM_)
+#define IRR_OGLES2_SHADER_PATH "media/Shaders/"
#else
#define IRR_OGLES2_SHADER_PATH "../../media/Shaders/"
#endif