我正试图用Javascript实现GPU加速计算
我通过以下方式输入图像
const gl=this.renderer.getContext()//这是一个三号投手。WebGLRendererthis.distancesTransform反馈。BSTextureLoc=gl.getUniformLocation(this.distancesTransformFeedback.program,'BSTexture');gl.activeTexture(gl.TEXTURE0);let texture=gl.createTexture();gl.bindTexture(gl.TEXTURE_2D,纹理);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA32UI,4096,4096,0,gl.RGBA_INTEGER,gl.UNSIGNED_INT,this.paddedblendshapes);gl.uniform1i(this.distancesTransformFeedback.BSTextureLoc,0);
在我使用的着色器中
均匀高usampler2D BSTexture;
然而,它总是抛出错误
[.WebGL-000039AC02ED8000]GL_INVALID_OPERATION:纹理格式和采样器类型(有符号/无符号/浮点/阴影)不匹配。
我咨询过这个回答
我已经抬头了OnpenGL ES 3.0.6版它说这是一个有效的组合
格式 |
类型 |
内部格式(_F) |
RGBA_整数 |
未指定_INT |
RGBAUI32型 |
我想不出是怎么回事
更新:
我尝试了Firefox浏览器,它的输出表明我没有正确输入纹理。
WebGL警告:单元0处的drawArraysInstanced:TEXTURE_2D为FLOAT类型,但着色器采样为UINT。WebGL警告:getBufferSubData:从使用非*_READ的缓冲区读取会导致管道暂停。通过STREAM_READ缓冲区进行复制。
我仍然不知道如何解决这个问题。