我正在尝试在 Android Studio 上制作一个使用 NDK 和 OpenGL ES 3.0 的应用程序。当我 #include 时,IDE 在我输入时会自动完成,我认为这是一个标志,意味着 IDE可以找到它
但是,我收到错误:“错误:(22, 10) 致命错误:找不到‘GLES3/gl3.h’文件”当我构建项目时。我检查了项目结构中的NDK路径,它是:
sdk\ndk-bundle\platforms\android-21\arch-arm64\usr\include\GLES3
这是正确的,GLES3/gl3.h 确实存在。
我已经用 GLESv3 声明了我的 CMakeList:
cmake_minimum_required(VERSION 3.4.1)
# now build app's shared lib
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
add_library(gl3jni SHARED
gl_code.cpp
stb_image.cpp
)
# add lib dependencies
target_link_libraries(gl3jni
android
log
EGL
GLESv3)
我还在 Manifest.xml 中声明了 OpenGL ES 版本:
<uses-feature android:glEsVersion="0x00030000" android:required="true"/>
我究竟做错了什么?
Android ndk-bundle 自 api 18 起就有 openglES3,但在 arm 平台上。
我的意思是,如果您要在armV8_64中编译项目,则必须将最小sdk设置为21。但是如果您要使用armeabi或armeabiV7,则最小api将为18。
因此,根据您的喜好更改您的 minSDK应用程序/build.gradle file.
我建议您定义 API 21 并定义您的产品风格以支持所有架构,除了您可以进行其他 3rdparty 库链接之外,代码应该如下所示:
android.productFlavors {
// for detailed abiFilter descriptions, refer to "Supported ABIs" @
// https://developer.android.com/ndk/guides/abis.html#sa
create("arm") {
ndk.abiFilters.add("armeabi")
ndk.ldFlags.add("-L${file(''your_libraries_path'')}".toString())
ndk.ldLibs.addAll(["your_armeabi_library"])
}
create("arm7") {
ndk.abiFilters.add("armeabi-v7a")
ndk.ldFlags.add("-L${file('your_libraries_path')}".toString())
ndk.ldLibs.addAll(["your_armv7_library"])
}
create("arm8") {
ndk.abiFilters.add("arm64-v8a")
ndk.ldFlags.add("-L${file(''your_libraries_path')}".toString())
ndk.ldLibs.addAll(["your_armv8_library"])
}
}
此 gradle 代码来自 gradle 0.8.3 实验性插件,因此如果您没有此版本,则需要进行一些更改以适应您的 gradle 版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)