相关疑难解决方法(0)

将结构数组的值从JS设置为GLSL

我一直在尝试制作一个包含我的WebGL应用程序所有灯光的结构,而且我很难设置JS的值.结构如下:

struct Light {
    vec4 position;
    vec4 ambient;
    vec4 diffuse;
    vec4 specular;
    vec3 spotDirection;
    float spotCutOff;
    float constantAttenuation;
    float linearAttenuation;
    float quadraticAttenuation;
    float spotExponent;
    float spotLightCosCutOff;
};
uniform Light lights[numLights];
Run Code Online (Sandbox Code Playgroud)

在测试了大量的东西之后我才开始工作,但是我对我写的代码不满意:

program.uniform.lights = []; 
    program.uniform.lights.push({
        position: "",
        diffuse: "",
        specular: "",
        ambient: "",
        spotDirection: "",
        spotCutOff: "",
        constantAttenuation: "",
        linearAttenuation: "",
        quadraticAttenuation: "",
        spotExponent: "",
        spotLightCosCutOff: ""         
    });


            program.uniform.lights[0].position = gl.getUniformLocation(program, "lights[0].position");
            program.uniform.lights[0].diffuse = gl.getUniformLocation(program, "lights[0].diffuse");
            program.uniform.lights[0].specular = gl.getUniformLocation(program, "lights[0].specular");
            program.uniform.lights[0].ambient = gl.getUniformLocation(program, "lights[0].ambient");

    ... and so on
Run Code Online (Sandbox Code Playgroud)

我很抱歉让你看看这段代码,我知道这很糟糕,但我找不到更好的方法.

是否有正确的标准或推荐方法?任何人都可以开导我吗?

javascript glsl webgl

3
推荐指数
1
解决办法
2866
查看次数

标签 统计

glsl ×1

javascript ×1

webgl ×1