着色器_预处理器

本文介绍了GLSL着色器预处理器的作用,包括删除注释、宏定义和条件代码管理。预处理指令如#define、#undef、#if系列用于控制常量、宏和条件编译。GLSL不支持文件包含,但提供了如#define用于定义常量,如__LINE__、__FILE__等预定义宏。预处理器条件如#ifdef用于条件代码块。此外,还讨论了如何使用#program指令控制编译器优化和调试,并介绍GLSL扩展处理及其指令限定符。
摘要由CSDN通过智能技术生成

学习目标

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

预处理器

编译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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值