Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.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++ 将glUniformMatrix与数组结合使用时出现分段错误_C++_Opengl 3 - Fatal编程技术网

C++ 将glUniformMatrix与数组结合使用时出现分段错误

C++ 将glUniformMatrix与数组结合使用时出现分段错误,c++,opengl-3,C++,Opengl 3,当我使用glUniformMatrix4fv将矩阵传递给mat4均匀体时,会出现分段错误 我的着色器如下所示: #version 330 core layout(location = 0) in vec3 pos; layout(std140) uniform ModelMatrixBuffer { mat4 ModelMatrix[2]; }; out vec3 color; uniform mat4 ViewProj; void main() { gl_Positi

当我使用
glUniformMatrix4fv
将矩阵传递给mat4均匀体时,会出现分段错误

我的着色器如下所示:

#version 330 core

layout(location = 0) in vec3 pos;

layout(std140) uniform ModelMatrixBuffer {
    mat4 ModelMatrix[2];
};

out vec3 color;

uniform mat4 ViewProj;

void main() {
    gl_Position = ViewProj * ModelMatrix[0] * vec4(pos, 1.f);
    color = vec3(1,1,0);
}
我想将glm::mat4传递到
ViewProj
。当我将
ModelMatrix
数组的大小更改为1时,它可以正常工作。像这样:

layout(std140) uniform ModelMatrixBuffer {
    mat4 ModelMatrix[1];
};

那么一切都很好

问题在于用于
glGetActiveUniform
的索引与特定制服的实际位置不一致

uniform int arr[3];
uniform int arr2[3];
uniform int i;
这里,索引将是0,1,2,因为
glGetActiveUniform
将只计算数组中的第一个元素,这里它将是
arr[0]
arr2[0]
。但是,对于数组中的每个元素,位置都会增加。因此,我将使用位置6,而不是位置2

我的错误是我有一张所有制服的地图,我保存的是索引而不是位置。因此,我尝试将ViewProj矩阵放入ModelMatrix数组的第二个元素中。我不知道为什么这会导致分割错误。他们都是马特4