Bootstrap

着色器_预处理器

学习目标

  • 预处理器是干啥的
  • 预处理器的指令
  • 宏定义
  • 预处理器条件
  • 编辑器控制
  • 扩展处理
    本节内容很简单,看一遍即可明白!

预处理器

编译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
;