Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多个着色器中使用的一个UBO中的偏移_C#_Opengl_Glsl_Opentk_Buffer Objects - Fatal编程技术网

C# 多个着色器中使用的一个UBO中的偏移

C# 多个着色器中使用的一个UBO中的偏移,c#,opengl,glsl,opentk,buffer-objects,C#,Opengl,Glsl,Opentk,Buffer Objects,我使用一个统一块,如下所示: uniform matrices { mat4 pv_matrix; mat4 screen_matrix; }; 在具有由UniformBlockBinding明确定义的相同绑定点的不同着色器中 要使用统一缓冲区对象,需要通过以下方式查询偏移: int offsets = new int[Length]; GL.GetActiveUniforms(id_program, Length, indices, ActiveUniformParamete

我使用一个统一块,如下所示:

uniform matrices
{
    mat4 pv_matrix;
    mat4 screen_matrix;
};
在具有由
UniformBlockBinding
明确定义的相同绑定点的不同着色器中

要使用统一缓冲区对象,需要通过以下方式查询偏移:

int offsets = new int[Length];
GL.GetActiveUniforms(id_program, Length, indices,
ActiveUniformParameter.UniformOffset, offsets);
我为每个着色器程序调用这段代码,结果相同

如果我理解正确,偏移量表示统一缓冲区对象的结构,它是所有被调用程序的一个


多次调用有意义吗?还是只需调用一次就足够了?

默认情况下,统一块按
共享的顺序排列。因此,您只需要在一个程序中查询布局;任何块声明也是
共享的
,并且与该块声明完全匹配,将具有相同的布局


或者您可以只使用std140
布局,而不查询任何内容。

默认情况下,统一块在
共享
顺序中布局。因此,您只需要在一个程序中查询布局;任何块声明也是
共享的
,并且与该块声明完全匹配,将具有相同的布局

或者您可以只使用std140布局,而不查询任何内容