orangeduck / Corange

Pure C Game Engine
http://www.youtube.com/watch?v=482GxqTWXtA
Other
1.79k stars 199 forks source link

Porting to GLES via Android #23

Closed gwald closed 7 years ago

gwald commented 7 years ago

I know Dan, isn't maintaining this project anymore but if anyone else is interested in Android support this is what I've got: My Android.mk file is: https://github.com/gwald/my-corange-demo/blob/master/Android.mk There's a few hacks I had to do: 1, creating SDL2 folders with hearders for SDL source, due to code having <SDL2/sdl.h> 2, in file: jni/corange/src/SDL2/SDL_local.c comment out line 15: #include

Anyway, that's really hacky, not sure what's the best way forward, but it works, kind of :/ I'm not an Android expert, nor anything else really!

I was hoping to target GLESv2, but v3 gives errors. Using android-19 which has GLESv3

[armeabi] SharedLibrary : libcorange.so jni/corange/src/assets/texture.c:73: error: undefined reference to 'glGetTexLevelParameteriv' jni/corange/src/assets/texture.c:74: error: undefined reference to 'glGetTexLevelParameteriv' jni/corange/src/assets/texture.c:75: error: undefined reference to 'glGetTexLevelParameteriv' jni/corange/src/assets/texture.c:89: error: undefined reference to 'glGetTexImage' jni/corange/src/assets/texture.c:95: error: undefined reference to 'glGetTexImage' jni/corange/src/assets/texture.c:113: error: undefined reference to 'glGetTexImage' jni/corange/src/assets/texture.c:131: error: undefined reference to 'glGetTexImage' jni/corange/src/assets/texture.c:229: error: undefined reference to 'glTexImage3D' jni/corange/src/assets/texture.c:249: error: undefined reference to 'glGetTexLevelParameteriv' jni/corange/src/assets/texture.c:617: error: undefined reference to 'glTexImage3D' jni/corange/src/rendering/renderer.c:375: error: undefined reference to 'glDrawBuffer' jni/corange/src/rendering/renderer.c:376: error: undefined reference to 'glReadBuffer' jni/corange/src/rendering/renderer.c:862: error: undefined reference to 'glClearDepth' jni/corange/src/rendering/renderer.c:916: error: undefined reference to 'glClearDepth' jni/corange/src/rendering/renderer.c:1376: error: undefined reference to 'glPointSize' jni/corange/src/rendering/renderer.c:1391: error: undefined reference to 'glPointSize' jni/corange/src/rendering/renderer.c:1426: error: undefined reference to 'glPointSize' jni/corange/src/rendering/renderer.c:1436: error: undefined reference to 'glPointSize' jni/corange/src/rendering/renderer.c:2619: error: undefined reference to 'glClearDepth' jni/corange/src/rendering/renderer.c:2662: error: undefined reference to 'glTexEnvf' jni/corange/src/rendering/renderer.c:2679: error: undefined reference to 'glTexEnvf' collect2: error: ld returned 1 exit status

gwald commented 7 years ago

Disregard, it's GLES31 API-21 for Android 5.0–5.1.1 "Lollipop" or higher Still not linking :/

/home/xp/Android/android-ndk-r10e/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-g++ -Wl,-soname,libcorange.so -shared --sysroot=/home/xp/Android/android-ndk-r10e/platforms/android-21/arch-arm ./obj/local/armeabi-v7a/objs-debug/corange/src/casset.o ./obj/local/armeabi-v7a/objs-debug/corange/src/caudio.o ./obj/local/armeabi-v7a/objs-debug/corange/src/cengine.o ./obj/local/armeabi-v7a/objs-debug/corange/src/centity.o ./obj/local/armeabi-v7a/objs-debug/corange/src/cgraphics.o ./obj/local/armeabi-v7a/objs-debug/corange/src/cjoystick.o ./obj/local/armeabi-v7a/objs-debug/corange/src/cnet.o ./obj/local/armeabi-v7a/objs-debug/corange/src/corange.o ./obj/local/armeabi-v7a/objs-debug/corange/src/cphysics.o ./obj/local/armeabi-v7a/objs-debug/corange/src/cui.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/animation.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/cmesh.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/config.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/effect.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/font.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/image.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/lang.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/material.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/music.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/renderable.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/shader.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/skeleton.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/sound.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/terrain.o ./obj/local/armeabi-v7a/objs-debug/corange/src/assets/texture.o ./obj/local/armeabi-v7a/objs-debug/corange/src/data/dict.o ./obj/local/armeabi-v7a/objs-debug/corange/src/data/int_list.o ./obj/local/armeabi-v7a/objs-debug/corange/src/data/list.o ./obj/local/armeabi-v7a/objs-debug/corange/src/data/randf.o ./obj/local/armeabi-v7a/objs-debug/corange/src/data/spline.o ./obj/local/armeabi-v7a/objs-debug/corange/src/data/vertex_hashtable.o ./obj/local/armeabi-v7a/objs-debug/corange/src/data/vertex_list.o ./obj/local/armeabi-v7a/objs-debug/corange/src/entities/animated_object.o ./obj/local/armeabi-v7a/objs-debug/corange/src/entities/camera.o ./obj/local/armeabi-v7a/objs-debug/corange/src/entities/instance_object.o ./obj/local/armeabi-v7a/objs-debug/corange/src/entities/landscape.o ./obj/local/armeabi-v7a/objs-debug/corange/src/entities/light.o ./obj/local/armeabi-v7a/objs-debug/corange/src/entities/particles.o ./obj/local/armeabi-v7a/objs-debug/corange/src/entities/physics_object.o ./obj/local/armeabi-v7a/objs-debug/corange/src/entities/static_object.o ./obj/local/armeabi-v7a/objs-debug/corange/src/SDL2/SDL_local.o ./obj/local/armeabi-v7a/objs-debug/corange/src/ui/ui_browser.o ./obj/local/armeabi-v7a/objs-debug/corange/src/ui/ui_button.o ./obj/local/armeabi-v7a/objs-debug/corange/src/ui/ui_dialog.o ./obj/local/armeabi-v7a/objs-debug/corange/src/ui/ui_listbox.o ./obj/local/armeabi-v7a/objs-debug/corange/src/ui/ui_option.o ./obj/local/armeabi-v7a/objs-debug/corange/src/ui/ui_rectangle.o ./obj/local/armeabi-v7a/objs-debug/corange/src/ui/ui_slider.o ./obj/local/armeabi-v7a/objs-debug/corange/src/ui/ui_spinner.o ./obj/local/armeabi-v7a/objs-debug/corange/src/ui/ui_style.o ./obj/local/armeabi-v7a/objs-debug/corange/src/ui/ui_textbox.o ./obj/local/armeabi-v7a/objs-debug/corange/src/ui/ui_text.o ./obj/local/armeabi-v7a/objs-debug/corange/src/ui/ui_toast.o ./obj/local/armeabi-v7a/objs-debug/corange/src/rendering/renderer.o ./obj/local/armeabi-v7a/objs-debug/corange/src/rendering/sky.o -lgcc ./obj/local/armeabi-v7a/libSDL2.so ./obj/local/armeabi-v7a/libSDL2_ttf.so ./obj/local/armeabi-v7a/libSDL2_image.so ./obj/local/armeabi-v7a/libSDL2_net.so ./obj/local/armeabi-v7a/libSDL2_mixer.so -no-canonical-prefixes -march=armv7-a -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -L/home/xp/Android/android-ndk-r10e/platforms/android-21/arch-arm/usr/lib -llog -landroid -lEGL -lGLESv3 -lstdc++ -lc -lm -o ./obj/local/armeabi-v7a/libcorange.so

jni/corange/src/assets/texture.c:89: error: undefined reference to 'glGetTexImage' jni/corange/src/assets/texture.c:95: error: undefined reference to 'glGetTexImage' jni/corange/src/assets/texture.c:113: error: undefined reference to 'glGetTexImage' jni/corange/src/assets/texture.c:131: error: undefined reference to 'glGetTexImage' jni/corange/src/rendering/renderer.c:375: error: undefined reference to 'glDrawBuffer' jni/corange/src/rendering/renderer.c:862: error: undefined reference to 'glClearDepth' jni/corange/src/rendering/renderer.c:916: error: undefined reference to 'glClearDepth' jni/corange/src/rendering/renderer.c:1376: error: undefined reference to 'glPointSize' jni/corange/src/rendering/renderer.c:1391: error: undefined reference to 'glPointSize' jni/corange/src/rendering/renderer.c:1426: error: undefined reference to 'glPointSize' jni/corange/src/rendering/renderer.c:1436: error: undefined reference to 'glPointSize' jni/corange/src/rendering/renderer.c:2619: error: undefined reference to 'glClearDepth' jni/corange/src/rendering/renderer.c:2662: error: undefined reference to 'glTexEnvf' jni/corange/src/rendering/renderer.c:2679: error: undefined reference to 'glTexEnvf'