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_ES
。 GLSL 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.h
、GLES2/gl2.h
、GLES3/gl3.h
、GLES3/gl31.h
或GLES3/gl32.h
,分别是:GL_VERSION_ES_CM_1_0
、GL_ES_VERSION_2_0
、GL_ES_VERSION_3_0
、GL_ES_VERSION_3_1
和GL_ES_VERSION_3_2
.从 GLES2/gl2.h
和以上任何内容开始,您将始终定义以前版本(直到 GLES 2.0)的定义。因此,当您包含 GLES3/gl31.h
时,您会发现要定义 GL_ES_VERSION_2_0
、GL_ES_VERSION_3_0
和 GL_ES_VERSION_3_1
。
但是,您可以在应用程序中决定是包含 OpenGL Desktop header 文件还是 OpenGL ES header 文件,并且您可以使用相同的条件来有条件地编译依赖于您为 OpenGL Desktop 或 OpenGL ES 编译。所以,您真的不需要任何 pre-defined 定义,因为您在程序的早期就自己决定了要包含哪些 header。
我正在使用支持 OpenGL 和 OpenGL ES 的代码库。
是否有任何 GLES 定义可用于在 C 中编写条件代码?类似于:
#include <GLES/gl.h>
#ifdef __GLES
//
#else
//
#endif
在 GLSL 着色器中
对于 GLSL 着色器的条件编译,有 GL_ES
。 GLSL 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.h
、GLES2/gl2.h
、GLES3/gl3.h
、GLES3/gl31.h
或GLES3/gl32.h
,分别是:GL_VERSION_ES_CM_1_0
、GL_ES_VERSION_2_0
、GL_ES_VERSION_3_0
、GL_ES_VERSION_3_1
和GL_ES_VERSION_3_2
.从 GLES2/gl2.h
和以上任何内容开始,您将始终定义以前版本(直到 GLES 2.0)的定义。因此,当您包含 GLES3/gl31.h
时,您会发现要定义 GL_ES_VERSION_2_0
、GL_ES_VERSION_3_0
和 GL_ES_VERSION_3_1
。
但是,您可以在应用程序中决定是包含 OpenGL Desktop header 文件还是 OpenGL ES header 文件,并且您可以使用相同的条件来有条件地编译依赖于您为 OpenGL Desktop 或 OpenGL ES 编译。所以,您真的不需要任何 pre-defined 定义,因为您在程序的早期就自己决定了要包含哪些 header。