我正在尝试在Android Studio上制作一个使用NDK和OpenGL ES 3.0的应用程序。当我#include< GLES3 / gl3.h&gt ;, 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"/>
我做错了什么?
答案 0 :(得分:1)
Android ndk-bundle自api 18开始有openglES3,但是在arm平台上。
我的意思是,如果你要在armV8_64中编译你的项目,你必须将你的min sdk设置为21.但是如果你打算使用armeabi或armeabiV7,那么最小api将为18。
因此,请根据您在 app / build.gradle 文件中的偏好设置更改您的minSDK。
我建议您定义API 21并定义您的产品风格以支持所有体系结构,除了可以创建其他第三方库链接外,代码应该是这样的:
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版本。
答案 1 :(得分:0)
别忘了设置
APP_PLATFORM:= android-23(或其他取决于uelordi的答案)
到application.mk