diff options
author | Juan Linietsky <reduzio@gmail.com> | 2015-12-02 11:15:48 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2015-12-02 11:15:48 -0300 |
commit | 4b1f0afb014cae7c9a84c8d7c0429f45f425214b (patch) | |
tree | e9cbbafa5f117bda785eff261e9eb8f7a1b41af5 /platform/android | |
parent | 7ac31a7209e0be79a9d5c7c91cd35228821c545d (diff) |
-several fixes to Android to work better on Tegra 3/4 devices, uses 16 bits FBOs so all 2D shader effects should now work in every single Android device.
Diffstat (limited to 'platform/android')
-rw-r--r-- | platform/android/java/src/com/android/godot/GodotLib.java | 2 | ||||
-rw-r--r-- | platform/android/java/src/com/android/godot/GodotView.java | 3 | ||||
-rw-r--r-- | platform/android/java_glue.cpp | 8 | ||||
-rw-r--r-- | platform/android/java_glue.h | 2 | ||||
-rw-r--r-- | platform/android/os_android.cpp | 9 | ||||
-rw-r--r-- | platform/android/os_android.h | 3 |
6 files changed, 23 insertions, 4 deletions
diff --git a/platform/android/java/src/com/android/godot/GodotLib.java b/platform/android/java/src/com/android/godot/GodotLib.java index f099e0feff..3d870b3b1f 100644 --- a/platform/android/java/src/com/android/godot/GodotLib.java +++ b/platform/android/java/src/com/android/godot/GodotLib.java @@ -46,7 +46,7 @@ public class GodotLib { public static native void initialize(Godot p_instance,boolean need_reload_hook,String[] p_cmdline,Object p_asset_manager); public static native void resize(int width, int height,boolean reload); - public static native void newcontext(); + public static native void newcontext(boolean p_32_bits); public static native void quit(); public static native void step(); public static native void touch(int what,int pointer,int howmany, int[] arr); diff --git a/platform/android/java/src/com/android/godot/GodotView.java b/platform/android/java/src/com/android/godot/GodotView.java index 1a84923065..bc249d46c6 100644 --- a/platform/android/java/src/com/android/godot/GodotView.java +++ b/platform/android/java/src/com/android/godot/GodotView.java @@ -425,6 +425,7 @@ public class GodotView extends GLSurfaceView { if (ec == null) { Log.w(TAG, "Trying ConfigChooser fallback"); ec = fallback.chooseConfig(egl, display, configs); + use_32=false; } return ec; } @@ -654,7 +655,7 @@ public class GodotView extends GLSurfaceView { } public void onSurfaceCreated(GL10 gl, EGLConfig config) { - GodotLib.newcontext(); + GodotLib.newcontext(use_32); } } } diff --git a/platform/android/java_glue.cpp b/platform/android/java_glue.cpp index d001cface2..2cc74c3bb0 100644 --- a/platform/android/java_glue.cpp +++ b/platform/android/java_glue.cpp @@ -920,14 +920,20 @@ JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_resize(JNIEnv * env, jobj } -JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_newcontext(JNIEnv * env, jobject obj) { +JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_newcontext(JNIEnv * env, jobject obj,bool p_32_bits) { __android_log_print(ANDROID_LOG_INFO,"godot","^_^_^_^_^ newcontext %lld\n",Thread::get_caller_ID()); + + if (os_android) { + os_android->set_context_is_16_bits(!p_32_bits); + } + if (os_android && step > 0) { os_android->reload_gfx(); } + } diff --git a/platform/android/java_glue.h b/platform/android/java_glue.h index 9410fe7132..e22b6775d8 100644 --- a/platform/android/java_glue.h +++ b/platform/android/java_glue.h @@ -38,7 +38,7 @@ extern "C" { JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_initialize(JNIEnv * env, jobject obj, jobject activity,jboolean p_need_reload_hook, jobjectArray p_cmdline,jobject p_asset_manager); JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_resize(JNIEnv * env, jobject obj, jint width, jint height, jboolean reload); - JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_newcontext(JNIEnv * env, jobject obj); + JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_newcontext(JNIEnv * env, jobject obj, bool p_32_bits); JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_step(JNIEnv * env, jobject obj); JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_quit(JNIEnv * env, jobject obj); JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_touch(JNIEnv * env, jobject obj, jint ev,jint pointer, jint count, jintArray positions); diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp index e2ff128f0d..e5d11bef69 100644 --- a/platform/android/os_android.cpp +++ b/platform/android/os_android.cpp @@ -141,6 +141,8 @@ void OS_Android::initialize(const VideoMode& p_desired,int p_video_driver,int p_ } + rasterizer->set_force_16_bits_fbo(use_16bits_fbo); + visual_server = memnew( VisualServerRaster(rasterizer) ); if (get_render_thread_mode() != RENDER_THREAD_UNSAFE) { @@ -725,6 +727,13 @@ void OS_Android::native_video_stop() { video_stop_func(); } +void OS_Android::set_context_is_16_bits(bool p_is_16) { + + use_16bits_fbo=p_is_16; + if (rasterizer) + rasterizer->set_force_16_bits_fbo(p_is_16); +} + OS_Android::OS_Android(GFXInitFunc p_gfx_init_func,void*p_gfx_init_ud, OpenURIFunc p_open_uri_func, GetDataDirFunc p_get_data_dir_func,GetLocaleFunc p_get_locale_func,GetModelFunc p_get_model_func, ShowVirtualKeyboardFunc p_show_vk, HideVirtualKeyboardFunc p_hide_vk, SetScreenOrientationFunc p_screen_orient,GetUniqueIDFunc p_get_unique_id,GetSystemDirFunc p_get_sdir_func, VideoPlayFunc p_video_play_func, VideoIsPlayingFunc p_video_is_playing_func, VideoPauseFunc p_video_pause_func, VideoStopFunc p_video_stop_func,bool p_use_apk_expansion) { diff --git a/platform/android/os_android.h b/platform/android/os_android.h index dcaa1db654..94c6250ae8 100644 --- a/platform/android/os_android.h +++ b/platform/android/os_android.h @@ -95,6 +95,8 @@ private: bool use_reload_hooks; bool use_apk_expansion; + bool use_16bits_fbo; + Rasterizer *rasterizer; VisualServer *visual_server; AudioServerSW *audio_server; @@ -200,6 +202,7 @@ public: void set_display_size(Size2 p_size); void reload_gfx(); + void set_context_is_16_bits(bool p_is_16); void set_need_reload_hooks(bool p_needs_them); virtual void set_screen_orientation(ScreenOrientation p_orientation); |