批量渲染-介绍
在这里我们将在一个drawcall打包多个几何体。即 batch geometry。
我们在这里将聚焦于2d渲染,我们如何渲染一堆2d的quads或者说rectangles呢?
一种情况是比如一个2d游戏有很多个tile组成,要去渲染这些tile;另一种情况比如一个粒子系统有很多独立的quads,又或者UI渲染:把一个文字当作一个独立的 texture quad。
字面上,batching 就是 batch 一些几何体在一个的 vertex buffer 和 index buffer 中然后draw一次
这里做的相当于一个静态批处理,将要绘制的图片都处理到一个顶点缓冲区和索引缓冲区内,一次性绘制出来
索引也要改,需要12个索引,绘制两个正方形
批量渲染-关于颜色
#shader vertex
#version 330 core
layout(location = 0)in vec4 position;
+layout(location = 2)in vec4 u_Color;
+out vec4 v_Color;
uniform mat4 u_MVP;
void main()
{
gl_Position = u_MVP * position;
+ v_Color = u_Color;
}
#shader fragment
#version 330 core
layout(location = 0)out vec4 color;
+in vec4 v_Color;
void main()
{
- color = vec4(1.0f, 1.0f, 1.0f, 1.0f);
+ color = v_Color;
}
直接将颜色数据写到顶点缓冲区内,然后传递给片元着色器
批量渲染-关于纹理
批量渲染-关于几何
视频地址:S27.优化统一变量_哔哩哔哩_bilibili
参考博文:Cherno OpenGL 教程 | Fl0w3r
亲亲老婆几-CSDN博客