学习目标
- 预处理器是干啥的
- 预处理器的指令
- 宏定义
- 预处理器条件
- 编辑器控制
- 扩展处理
本节内容很简单,看一遍即可明白!
预处理器
编译GLSL 着色器的第一个步骤是由预处理进行解析的。你可能还是不知道干啥的,它的作用就是删除注释、包含其他文件以及执行宏(宏macro是一段重复文字的简短描写)替代。
预处理指令
GLSL 提供了一些指令,用于创建条件编译代码块以及定义一些值。但是,和 c语言的预处理器不同GLSL 并没有提供文件包含命令.你可能会问了什么叫文件包含命令,其实你是知道的,例如:#include<文件名>
接下来,我们看看GLSL 给我们提供了那些预处理指令
|预处理指令|描述|
|---|
|#define|控制常量和宏的定义|
|#undef|控制常量和宏的定义|
|#if,#ifdef,#ifndef|条件代码管理|
|#else,#elif,#endif|条件表达式,只针对表达式和定义的值进行求值|
|#error text|使编译器在着色器信息日志中插入text|
|#program options|控制编译器的特定选项|
|#extension options|根据指定的GLSL扩展,指定编译器操作|
|#version number|强制要求支持一个特定版本的GLSL 版本|
|#line options|控制诊断行的信号|
宏定义
GLSL 预处理器允许使用宏定义,它与C语言的处理器所采用的方式极为相似,只是它并不提供字符串替换和连接工具。它可以定义单个值
#define NUM_ELEMENTS 10
#define LP