WebGL检查哪个纹理单元绑定到统一纹理

WebGL检查哪个纹理单元绑定到统一纹理,webgl,Webgl,是否可以使用javascript检查哪个纹理单元绑定到制服?例如,psudeo代码!: let samplerRef = gl.getUniformLocation(program, 'textureSampler'); gl.uniform1i(samplerRef, 0); console.log(samplerRef.textureUnit); // texture unit 0 我正在调试一些代码,这将帮助我确保我的纹理单元连接到正确的采样器。然而,我在网上找不到任何可以让我这样做

是否可以使用javascript检查哪个纹理单元绑定到制服?例如,psudeo代码!:

let samplerRef = gl.getUniformLocation(program, 'textureSampler'); 
gl.uniform1i(samplerRef, 0);
console.log(samplerRef.textureUnit);  // texture unit 0

我正在调试一些代码,这将帮助我确保我的纹理单元连接到正确的采样器。然而,我在网上找不到任何可以让我这样做的代码

您可以通过调用`

const currentValue = gl.getUniform(program, uniformLocation);
还可以通过调用获取绑定到当前活动纹理单元的纹理对象

const texture2D = gl.getParameter(gl.TEXTURE_BINDING_2D);
const textureCubeMap = gl.getParameter(gl.TEXTURE_BINDING_CUBE_MAP);
因此,如果您想获得纹理对象,如果调用gl.drawXXX,uinform将使用以下操作

const unit = gl.getUniform(program, samplerUniformLocation);
gl.activeTexture(gl.TEXTURE0 + unit);
const texture2D = gl.getParameter(gl.TEXTURE_BINDING_2D);
例子

const gl=document.createElement'canvas.getContext'webgl'; 常数vs=` 统一int-abc; 统一的vec3-def; 真空总管{ gl_位置=向量4def,abc; } `; 常数fs=` 高精度浮点; 均匀采样2d-tex; 真空总管{ gl_FragColor=纹理2dtex,vec20; } `; const program=twgl.createProgramgl[vs,fs]; gl.useprogrammProgram; gl.uniform1igl.GetUNIFORMLLocationProgram,“abc”,123; gl.uniform3fvgl.getuniformlLocationProgram,'def',[4,5,6]; gl.uniform1igl.getUniformLocationprogram'tex',7; gl.activeTexturegl.TEXTURE0+7; 常量tex=gl.createTexture; gl.bindTexturegl.TEXTURE_2D,tex; 对数'--纹理单位---'; //获取所有当前绑定的纹理 const numTextureUnits=gl.getParametergl.MAX\u组合纹理图像单元; 对于let单位=0;单位你的答案总是非常详细和清晰!谢谢,这正是我需要的。