GLSL着色语言

# GLSL

# 概念理解

  • OpenGL的着色器语言是GLSL,也就是OpenGL Shading Language
  • OpenGL分为OpenGLOpenGL ES
  • 开始支持可编程渲染管线的版本是OpenGL 2.0OpenGL ES 2.0
  • OpenGL 3.0是最后既支持可编程渲染管线也支持固定管线的版本,之后就完全移除了固定管线的概念

# 最新版本的OpenGL包含

  • 顶点着色器 Vertex Shader
  • 几何着色器 Geometry Shader
  • 曲面细分着色器 Tessellation Shader
  • 片元着色器 Fragment Shader

# OpenGL使用着色器的流程

  • 创建着色器对象
  • 源码关联到着色器对象
  • 编译着色器
  • 创建一个程序对象
  • 将着色器对象关联到程序对象

# OpenGL与GLSL通信

GLSL与OpenGL通信

# OpenGL与GLSL版本对应

OpenGL和GLSL版本对应

# OpenGL集成开发环境

  • Visual Studio 2019
  • GLFW (OpenGL C语言库,对于渲染提供了接口)
  • GLAD (管理OpenGL的函数矩阵)

# GLSL数据类型

  • 标量:整数(int) 、无符号整数(uint)、布尔类型(bool)及浮点(float)
  • 矢量:一个矢量可以有2、3、4个分量 vec4 a = vec4(1.0,2.0,3.0,4.0);
  • 矩阵:mat2 m = mat2(1.0,2.0,3.0,4.0);
矩阵写法
  • 结构和数组:结构体的成员或者数组的基类型可以为任意的数据类型
//定义一个光源结构体
struct lightSource{
  vec3 color;
  vec3 position;
}
//定义10个光源
lightSource spotlights[10]
1
2
3
4
5
6
7

# GLSL控制结构

  • 循环结构:for,while 和 do while
  • 选择结构:if-then,if-then-else,GLSL3.0引入了switch结构

注意

goto 语句和标签是绝对不可以使用的

# EBO、VBO和VAO

  • EBO(element buffer object,也叫index buffer object)索引缓冲区对象,这个缓冲区主要用来存储顶点的索引信息

    EBO

  • VBO(vertex buffer object)顶点缓冲区对象,主要用来存储顶点的各种信息。好处:模型的顶点信息放进VBO,这样每次画模型时,数据不在通过CPU从内存中读取,而是直接从GPU的显存中读取,从而提高效率

VBO
  • VAO(vertex array object)顶点数组对象,VAO是一个绑定了所有顶点数据属性和状态的集合,它存储了顶点数据的格式以及顶点数据所需的VBO对象的引用
VBO和VAO之间的关系
上次更新: 2025/03/22, 13:47:44
最近更新
01
Git问题集合
01-29
02
安装 Nginx 服务器
01-25
03
安装 Docker 容器
01-25
更多文章>
×
×