预处理指令
和C语言一样,有如下预处理指令
#define
#undef
#if
#ifdef
#ifndef
#else
#elif
#endif
下面是一些预处理宏,在编译是被替换为适当的值
__LINE__ // Replaced with the current line number in a shader
__FILE__ // Always 0 in OpenGL ES 2.0
__VERSION__ // The OpenGL ES shading language version (e.g., 100)
GL_ES // This will be defined for ES shaders to a value of 1
#error log 编译错误退出,并生成一个LOG 信息
#pragma 编译器相关指示
#version 100 用于向后兼容,指示当前shader是用哪个版本的opengl es。opengl es 2.0的版本是100
#extension 指示一个扩展函数是,或者所有扩展函数是否可用,格式如下:
// Set behavior for an extension
#extension extension_name : behavior
// Set behavior for ALL extensions
#extension all : behavior
behavior有4个可选值:
require,必须有这个扩展,如果GPU不支持,抛出错误;enable, 扩展使能,如果不支持,抛出告警;warn, 所有使用到扩展的语句,抛出告警;disable, 禁用扩展