Skip to content

Commit 22f0094

Browse files
committed
WIP OpenGL support for android with GLES2
1 parent 4c3f662 commit 22f0094

File tree

3 files changed

+50
-31
lines changed

3 files changed

+50
-31
lines changed

CMakeLists.txt

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -234,27 +234,35 @@ if(ENABLE_DISCORD)
234234
add_subdirectory(external/discord-sdk EXCLUDE_FROM_ALL)
235235
endif()
236236

237-
set(USE_GL_LIBRARY "glew" CACHE STRING "Which OpenGL function library to choose from (e.g. glew, libepoxy)")
237+
if(ANDROID)
238+
set(USE_GL_LIBRARY_DEFAULT "libepoxy")
239+
else()
240+
set(USE_GL_LIBRARY_DEFAULT "glew")
241+
endif()
242+
set(USE_GL_LIBRARY ${USE_GL_LIBRARY_DEFAULT} CACHE STRING "Which OpenGL function library to choose from (e.g. glew, libepoxy)")
238243
set_property(CACHE USE_GL_LIBRARY PROPERTY STRINGS glew libepoxy)
239244

240245
set(HAVE_OPENGL NO)
241246
set(HAVE_CURL NO)
242247
set(HAVE_GLEW NO)
243248
set(HAVE_EPOXY NO)
244-
# OpenGL for Emscripten is added in Emscripten.cmake
245-
if(ENABLE_OPENGL AND NOT EMSCRIPTEN)
249+
if(ANDROID)
250+
# SDL already adds OpenGLES to the linker command
251+
set(HAVE_OPENGL YES)
252+
set(USE_OPENGLES2 YES)
253+
elseif(ENABLE_OPENGL AND NOT EMSCRIPTEN)
246254
set(OpenGL_GL_PREFERENCE "LEGACY")
247-
find_package(OpenGL)
255+
find_package(OpenGL QUIET)
248256

249-
if(OPENGL_FOUND)
250-
if ("${USE_GL_LIBRARY}" STREQUAL "glew")
257+
if(OPENGL_FOUND OR ANDROID)
258+
if (USE_GL_LIBRARY STREQUAL "glew")
251259
message(STATUS "Using glew")
252260
add_package(TARGET GLEW
253261
PKG GLEW PKG_USE GLEW::GLEW CONFIG REQUIRED PKG_CONFIG glew
254262
PREFER_PKGCONFIG)
255263
set(HAVE_OPENGL "${ADDPKG_GLEW_FOUND}")
256264
set(HAVE_GLEW ON)
257-
elseif ("${USE_GL_LIBRARY}" STREQUAL "libepoxy")
265+
elseif (USE_GL_LIBRARY STREQUAL "libepoxy")
258266
message(STATUS "Using libepoxy")
259267
add_package(TARGET libepoxy
260268
PKG libepoxy PKG_CONFIG epoxy libepoxy
@@ -419,7 +427,6 @@ else()
419427
set_property(TARGET squirrel PROPERTY INTERPROCEDURAL_OPTIMIZATION OFF)
420428
endif()
421429

422-
423430
# Include altivec wrapper on ppc
424431
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc.*")
425432
target_include_directories(supertux2 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src/ppc)
@@ -456,11 +463,12 @@ if(NOT EMSCRIPTEN)
456463
set(HAVE_CURL YES)
457464
endif()
458465

459-
if(HAVE_OPENGL)
460-
if ("${USE_GL_LIBRARY}" STREQUAL "glew")
461-
target_link_libraries(supertux2 PUBLIC OpenGL::GL GLEW)
466+
if(HAVE_OPENGL AND NOT ANDROID)
467+
target_link_libraries(supertux2 PUBLIC OpenGL::GL)
468+
if(USE_GL_LIBRARY STREQUAL "glew")
469+
target_link_libraries(supertux2 PUBLIC GLEW)
462470
else()
463-
target_link_libraries(supertux2 PUBLIC OpenGL::GL libepoxy)
471+
target_link_libraries(supertux2 PUBLIC libepoxy)
464472
endif()
465473
endif()
466474

@@ -484,21 +492,22 @@ configure_file(config.h.in ${CMAKE_BINARY_DIR}/config.h)
484492
if(ANDROID)
485493
set(ANDROID_PROJECT_DIR "${PROJECT_SOURCE_DIR}/mk/android/" CACHE PATH
486494
"Path to the root of the root of the android project")
487-
if(NOT EXISTS "${ANDROID_PROJECT_DIR}/assetpack/src/main/assets/data.zip")
488-
get_filename_component(DATADIR ${PROJECT_SOURCE_DIR}/data REALPATH)
489-
if(NOT EXISTS ${ANDROID_PROJECT_DIR}/assetpack/src/main/assets)
490-
file(MAKE_DIRECTORY ${ANDROID_PROJECT_DIR}/assetpack/src/main/assets)
491-
endif()
492-
file(GLOB DATA_CONTENTS RELATIVE ${DATADIR} ${DATADIR}/*)
493-
#file(ARCHIVE_CREATE OUTPUT ${ANDROID_PROJECT_DIR}/app/src/main/assets/data.zip PATHS ${DATA_CONTENTS} FORMAT zip)
494-
execute_process(COMMAND ${CMAKE_COMMAND} -E tar "cfv"
495-
"${ANDROID_PROJECT_DIR}/assetpack/src/main/assets/data.zip"
496-
--format=zip
497-
${DATA_CONTENTS}
498-
499-
WORKING_DIRECTORY ${DATADIR}
500-
)
495+
set(ANDROID_ASSETS_DIR "${ANDROID_PROJECT_DIR}/assetpack/src/main/assets")
496+
set(ANDROID_DATA_ZIP "${ANDROID_ASSETS_DIR}/data.zip")
497+
get_filename_component(DATA_DIR ${PROJECT_SOURCE_DIR}/data REALPATH)
498+
499+
if(NOT EXISTS "${ANDROID_ASSETS_DIR}")
500+
file(MAKE_DIRECTORY "${ANDROID_ASSETS_DIR}")
501501
endif()
502+
503+
file(GLOB DATA_CONTENTS RELATIVE "${DATA_DIR}" "${DATA_DIR}/*")
504+
add_custom_command(
505+
OUTPUT "${ANDROID_DATA_ZIP}"
506+
COMMAND ${CMAKE_COMMAND} -E tar "cfv" "${ANDROID_DATA_ZIP}" --format=zip ${DATA_CONTENTS}
507+
WORKING_DIRECTORY "${DATA_DIR}"
508+
COMMENT "Creating data.zip for android assets"
509+
)
510+
target_sources(supertux2 PRIVATE "${ANDROID_DATA_ZIP}")
502511
endif()
503512

504513
## Build tests

mk/android/app/build.gradle

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ android {
2121
minSdkVersion 21
2222

2323
// NOTE: Don't forget to bump the version code!
24-
versionCode 3
24+
versionCode 4
2525
versionName "0.7.0-beta2"
2626

2727
ndkVersion "29.0.14206865"
@@ -35,7 +35,8 @@ android {
3535
"-DSUPERTUX_NDK_HOME=" + props.getProperty("ndk_home", ""),
3636
"-DVCPKG_MANIFEST_MODE=OFF",
3737
"-DVCPKG_VERBOSE=ON",
38-
"-DENABLE_OPENGL=OFF",
38+
"-DENABLE_OPENGL=ON",
39+
"-DUSE_SYSTEM_SDL2_TTF=ON",
3940
"-DANDROID_ALLOW_UNDEFINED_SYMBOLS=OFF", // Literally what the fuck
4041
//"--debug-find", // If something isn't being found, uncomment this
4142
"--log-level", "TRACE",
@@ -77,6 +78,8 @@ android {
7778
lint {
7879
abortOnError false
7980
}
81+
82+
genera
8083
}
8184

8285
dependencies {

vcpkg.json

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,20 @@
2222
],
2323
"supports": "!emscripten"
2424
},
25-
"opengl": {
26-
"description": "Add OpenGL support",
25+
"glew": {
26+
"description": "Use glew for OpenGL support",
2727
"dependencies": [
2828
"glew"
2929
],
3030
"supports": "!(android | emscripten)"
3131
},
32+
"libepoxy": {
33+
"description": "Use libepoxy for OpenGL support",
34+
"dependencies": [
35+
"libepoxy"
36+
],
37+
"supports": "!(android | emscripten)"
38+
},
3239
"bidi": {
3340
"description": "Add proper support for bidirectional text (kind of a hack)",
3441
"dependencies": [
@@ -37,5 +44,5 @@
3744
"supports": "!emscripten"
3845
}
3946
},
40-
"default-features": ["nonwasm", "opengl", "bidi"]
47+
"default-features": ["nonwasm", "glew", "bidi"]
4148
}

0 commit comments

Comments
 (0)