Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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
如何使用javascript代码从webgl着色器获取统一值_Javascript_Webgl_Shader_Vertex Shader_Uniform - Fatal编程技术网

如何使用javascript代码从webgl着色器获取统一值

如何使用javascript代码从webgl着色器获取统一值,javascript,webgl,shader,vertex-shader,uniform,Javascript,Webgl,Shader,Vertex Shader,Uniform,我正在使用javascript和webgl制作应用程序。我想用javascript代码从着色器中获得统一的值 这是我的顶点着色器 var VertexShaderCode= "precision mediump float;"+ "attribute vec3 vertexPos;" + "uniform mat4 modelViewMatrix;" + "uniform mat4 projectionMatrix;" + "

我正在使用javascript和webgl制作应用程序。我想用javascript代码从着色器中获得统一的值

这是我的顶点着色器

  var VertexShaderCode=  "precision mediump float;"+
        "attribute vec3 vertexPos;" +
        "uniform mat4 modelViewMatrix;" +
        "uniform mat4 projectionMatrix;" +
        "uniform float pointSize;"+
        "void main(void) {" +
           "gl_Position= projectionMatrix*modelViewMatrix*vec4(vertexPos, 1.0);" +
            "gl_PointSize=pointSize;"+
        "}"
我想通过使用javascript获得pointSize值,然后在javascript代码中使用该值


有什么想法吗?我该怎么办?

既然您正在设置制服,您应该已经知道了值。但是如果出于某种原因您想查找它,那么您只需调用
gl.getUniform(程序,位置)

例如:

const gl=document.createElement('canvas').getContext('webgl');
常数vs=`
均匀浮球;
void main(){
gl_位置=vec4(0,0,0,1);
gl_PointSize=foo;
}
`;
常数fs=`
精密中泵浮子;
void main(){
gl_FragColor=vec4(0);
}
`;
//编译着色器,链接程序
const program=twgl.createProgram(gl[vs,fs]);
const-foullocation=gl.getUniformLocation(程序“foo”);
//集福
gl.useProgram(程序);
德国劳埃德船级社uniform1f(第123.4条);
//得到福
console.log('foo:',gl.getUniform(程序,位置))

作为旁注,您还可以使用反勾号创建多行字符串文字,以提高可读性。有关浏览器支持的详细信息,请参见