Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
Opengl 如何将值传递给vispy程序中着色器内部声明的结构?_Opengl_Glsl_Opengl Es 2.0_Vispy - Fatal编程技术网

Opengl 如何将值传递给vispy程序中着色器内部声明的结构?

Opengl 如何将值传递给vispy程序中着色器内部声明的结构?,opengl,glsl,opengl-es-2.0,vispy,Opengl,Glsl,Opengl Es 2.0,Vispy,我的片段着色器包含以下结构变量 struct Material { vec3 ambient; vec3 diffuse; vec3 specular; float shininess; }; uniform Material material; // another uniform uniform float tmp; 在使用过程中 self.program['material.ambient'] = [1,1,1] self.program['materi

我的片段着色器包含以下结构变量

struct Material
{
    vec3 ambient;
    vec3 diffuse;
    vec3 specular;
    float shininess;
};

uniform Material material;
// another uniform
uniform float tmp;
在使用过程中

self.program['material.ambient'] = [1,1,1]
self.program['material.diffuse'] = [1,0.7,1]
self.program['material.specular'] = [0.5,1,1]
self.program['material.shininess'] = 32
self.program['tmp'] = 10
我得到以下错误

WARNING: Value provided for 'material.diffuse', but this variable was not found in the shader program.
WARNING: Value provided for 'material.ambient', but this variable was not found in the shader program.
WARNING: Value provided for 'material.specular', but this variable was not found in the shader program.
WARNING: Value provided for 'material.shininess', but this variable was not found in the shader program.
INFO: Program has unset variables: { 'material.specular', 'material.shininess', 'material.diffuse', 'material.ambient'}
我正在使用正确的着色器程序,并链接了正确的片段着色器。
我想vispy还不支持struct类型,有什么办法可以传递这些值吗?

你确定这些制服在你的着色器中确实是活动的,也就是说,它们真的会影响输出吗?是的,它们是活动的,实际上,vispy还不支持结构,所以我不得不使用OpenGL后端来设置它们。thanks@TusharGupta您是否将功能完全添加到GL后端以支持此功能?你能为它做一个拉取请求吗(如果我错过了,很抱歉)?@djoese实际上不是structs,我用数组来解决这个问题。如果有一个结构,其成员包括灯光、扩散、不透明度。我使用了像灯光[100],不透明度[100]这样的数组。。然后通过索引引用它们。听起来不错。也许将来vispy会更容易支持这一点。如果我没记错的话,需要对着色器解析进行一些重写。你确定这些一致性在着色器中实际处于活动状态吗,即这些一致性是否真的会影响输出?是的,它们处于活动状态,实际上vispy中还不支持结构,因此我必须使用open gl后端进行设置。thanks@TusharGupta您是否将功能完全添加到GL后端以支持此功能?你能为它做一个拉取请求吗(如果我错过了,很抱歉)?@djoese实际上不是structs,我用数组来解决这个问题。如果有一个结构,其成员包括灯光、扩散、不透明度。我使用了像灯光[100],不透明度[100]这样的数组。。然后通过索引引用它们。听起来不错。也许将来vispy会更容易支持这一点。如果我没记错的话,需要重写着色器解析。