C 中是否有任何 GLES #define?

Is there any GLES #define in C?

我正在使用支持 OpenGL 和 OpenGL ES 的代码库。

是否有任何 GLES 定义可用于在 C 中编写条件代码?类似于:

#include <GLES/gl.h>

#ifdef __GLES
 //
#else
 //
#endif

在 GLSL 着色器中

对于 GLSL 着色器的条件编译,有 GL_ESGLSL ES 1.00 specification 在第 3.4 节“预处理器”下定义:

The following predefined macros are available

__LINE__

__FILE__

__VERSION__

GL_ES

GL_ES will be defined and set to 1. This is not true for the non-ES OpenGL Shading Language, so it can be used to do a compile time test to see whether a shader is running on ES.

因此您可以在着色器中检查 GL_ES

在host/C代码中

如果您想知道项目中是否正在为特定版本的 OpenGL ES 编译任何特定的 C 文件,那么您可以使用 GLES/gl.hGLES2/gl2.hGLES3/gl3.hGLES3/gl31.hGLES3/gl32.h,分别是:GL_VERSION_ES_CM_1_0GL_ES_VERSION_2_0GL_ES_VERSION_3_0GL_ES_VERSION_3_1GL_ES_VERSION_3_2 .从 GLES2/gl2.h 和以上任何内容开始,您将始终定义以前版本(直到 GLES 2.0)的定义。因此,当您包含 GLES3/gl31.h 时,您会发现要定义 GL_ES_VERSION_2_0GL_ES_VERSION_3_0GL_ES_VERSION_3_1

但是,您可以在应用程序中决定是包含 OpenGL Desktop header 文件还是 OpenGL ES header 文件,并且您可以使用相同的条件来有条件地编译依赖于您为 OpenGL Desktop 或 OpenGL ES 编译。所以,您真的不需要任何 pre-defined 定义,因为您在程序的早期就自己决定了要包含哪些 header。