一:概述
本文学习记录下 alienrain 的实现原理。它模拟了“Alien”图案的雨滴下落效果,并使用了着色器,纹理数组和Uniform Buffer 缓冲区等现代OpenGL接口。下面是代码实现分析以及主要接口介绍。
二:实现过程
该例子主要使用了GL_TEXTURE_2D_ARRAY 来存储多个图像层,这非常适合需要切换纹理的场景。另外该例子还使用了Unform Buffer 缓冲区来存储雨滴属性数据,避免了每帧传递多个单独的uniform。
下面是程序代码分析,和主要接口介绍:
1. 初始化着色器
1.1: 顶点着色器
static const char * vs_source[] =
{
// 使用 GLSL 4.10 版本
"#version 410 core \n"
" \n"
// 定义一个输入变量,表示Alien索引,通过 location=0 绑定到输入位置 0
"layout (location = 0