Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OpenGL ES版本在编译时_Android_C++_Opengl Es_Android Ndk - Fatal编程技术网

Android OpenGL ES版本在编译时

Android OpenGL ES版本在编译时,android,c++,opengl-es,android-ndk,Android,C++,Opengl Es,Android Ndk,我需要知道在Android NDK(C++)上编译时的OpenGL ES版本。在台式机上,我知道这是 #ifdef OPENGL_ES==1 或 但在android上,我不知道哪个常数是。OpenGL ES 2.0是在API 8()中引入的。API 18中引入了3.0。但是,使用哪个版本的总账进行编译取决于包含哪个总账表头。要确定所需的头是否存在,必须检查API level.h中的\uuuu ANDROID\u API\uuu宏 #include <android/api-le

我需要知道在Android NDK(C++)上编译时的OpenGL ES版本。在台式机上,我知道这是

#ifdef OPENGL_ES==1 


但在android上,我不知道哪个常数是。

OpenGL ES 2.0是在API 8()中引入的。API 18中引入了3.0。但是,使用哪个版本的总账进行编译取决于包含哪个总账表头。要确定所需的头是否存在,必须检查API level.h中的
\uuuu ANDROID\u API\uuu

    #include <android/api-level.h>
    #if __ANDROID_API__ >= 18
    # include <GLES3/gl3.h>
    #elif __ANDROID_API__ >= 8
    # include <GLES2/gl2.h>
    #else
    # include <GLES/gl.h>
    #endif

你想达到什么目标?在编译时,你无法知道你运行应用程序的设备将支持哪些版本。OpenGL ES 2.0在不久前成为Android设备上的强制性版本,但我不记得是哪个版本,所以在某一点之后,你可以假设它存在。所有支持2.x的设备也支持1.x。如果您不想进行运行时检测,可以使用Android Market标志指定GLES要求。Grafika的EGL管理类演示了如何选择GLES2或GLES3(如果可用)。(源代码是Java的,但它是直接翻译成本机--)谢谢。但是我会在构建过程中使用cmake,使用它我可以在编译时设置预处理器常量。使用cmake设置这些预处理器宏(我也使用cmake)会很奇怪,因为它们包含在Android NDK中的头文件中。例如,如果您设置了
\uuuuu ANDROID\u API\uuuuu
,它将覆盖您正在构建的NDK的实际版本。我将向编译器添加新常量以检查opengl版本,因为我需要为该应用程序跨平台编译。
    #include <android/api-level.h>
    #if __ANDROID_API__ >= 18
    # include <GLES3/gl3.h>
    #elif __ANDROID_API__ >= 8
    # include <GLES2/gl2.h>
    #else
    # include <GLES/gl.h>
    #endif
    #if defined(GL_ES_VERSION_3_0) && GL_ES_VERSION_3_0
    // gles3 version
    #elif defined(GL_ES_VERSION_2_0) && GL_ES_VERSION_2_0
    // gles2 version
    #else
    // gles version
    #endif