我使用这样的一个统一块:
uniform matrices
{
mat4 pv_matrix;
mat4 screen_matrix;
};
在具有由 . 明确定义的相同绑定点的不同着色器中UniformBlockBinding
。
要使用统一缓冲区对象,需要以这种方式查询偏移量:
int offsets = new int[Length];
GL.GetActiveUniforms(id_program, Length, indices,
ActiveUniformParameter.UniformOffset, offsets);
我为每个具有相同结果的着色器程序调用此代码。
如果我理解正确,偏移量代表统一缓冲区对象的结构,它是所有被调用程序的结构。
多次调用是否有意义,或者调用它就足够了?