Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.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++ 数组的数组(ARB_数组中的数组)的opengl glUniform_C++_C_Opengl - Fatal编程技术网

C++ 数组的数组(ARB_数组中的数组)的opengl glUniform

C++ 数组的数组(ARB_数组中的数组)的opengl glUniform,c++,c,opengl,C++,C,Opengl,如果我有一个片段着色器,看起来像这样: #version 450 #define MAX_NUM_LIGHTS 10 #define NUM_CASCADES 6 uniform sampler2D depthMap[NUM_CASCADES][MAX_NUM_LIGHTS]; ... < >我如何通过C++程序将值从 GLUTIONE…发送给着色器? 如果我有: #define MAX_NUM_LIGHTS 10 uniform sampler2D depthMap[MAX_NUM_L

如果我有一个片段着色器,看起来像这样:

#version 450

#define MAX_NUM_LIGHTS 10
#define NUM_CASCADES 6
uniform sampler2D depthMap[NUM_CASCADES][MAX_NUM_LIGHTS];

...
< >我如何通过C++程序将值从<代码> GLUTIONE…<代码>发送给着色器? 如果我有:

#define MAX_NUM_LIGHTS 10

uniform sampler2D depthMap[MAX_NUM_LIGHTS];
...
我想这样做:

...
GLint tmp[MAX_NUM_LIGHTS];
for(GLint i = 0; i<MAX_NUM_LIGHTS; i++)
{
   tmp[i] = 2+i; // all textures up to GL_TEXTURE1 are already bound.
   glActiveTexture(GL_TEXTURE2+i);
   glBindTexture(GL_TEXTURE_2D, depthMapID[i]);
}
glUniform1iv(model.depthMap_UniformLocation,  MAX_NUM_LIGHTS,  tmp);
。。。
闪烁tmp[最大数量灯光];

对于(GLint i=0;iOpenGL中数组的工作方式类似于结构数组。这意味着每个数组都有一个单独的统一位置,因此有一个单独的名称。但是,一旦你开始研究基本类型的数组,它就像一个基本类型的常规数组:你可以将大量的值注入该数组的第一个位置。

在您的例子中,有6种制服,分别命名为“depthMap[0]”到“depthMap[5]”。每种制服都是一个10元素数组