构建Uniform blocks, 将此结构数据存入 buffer object, 性能会有很大的提高。
这篇对uniform buffer object 的std140规则, uniform block赋值讲解的非常详细
记录下书中的例子。以下是vertextShader:
#version 440 core
in vec4 position;
out VS_OUT
{
vec4 color;
} vs_out;
// default block uniform
uniform mat4 mv_matrix;
// uniform block
//推荐的memory layout qualifier是 std140
//binding point 连接uniform block 与 buffer object
layout(std140, binding = 0) uniform TransformBlock
{
mat4 proj_matrix;
};
void main()
{
// mvp 变换
gl_Position = proj_matrix * mv_matrix * position;
vs_out.color = position * 2.0 + vec4(0.5, 0.5, 0.5, 0.0);
}
以下是Start()内:
// cube
static const GLfloat vertex_positions[] =
{
-0.5f, -0.5f, -0.5f,
0.5f, 0.5f, -