Как передать значения в структуру, объявленную внутри шейдера в программе в vispy? - PullRequest
1 голос
/ 13 июля 2020

Мой фрагментный шейдер содержит следующую структурную переменную.

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

uniform Material material;
// another uniform
uniform float tmp;

В vispy при использовании

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 , есть ли какая-то работа, с помощью которой я могу передать эти значения?

...