Javascript GLDraweElements:绘图的源纹理和目标纹理相同

Javascript GLDraweElements:绘图的源纹理和目标纹理相同,javascript,webgl,framebuffer,blending,glsles,Javascript,Webgl,Framebuffer,Blending,Glsles,我正忙着将一些代码从OpenGL传输到WebGL2(进行双深度剥离),但我在控制台中收到了一个警告,我无法理解,输出是黑色的 我已经完成了单独绘制一些缓冲区的过程,并发现当我进行几何体传递时,警告仅出现在(var p=1;p

我正忙着将一些代码从OpenGL传输到WebGL2(进行双深度剥离),但我在控制台中收到了一个警告,我无法理解,输出是黑色的

我已经完成了单独绘制一些缓冲区的过程,并发现当我进行几何体传递时,警告仅出现在(var p=1;p 我基于mine off的着色器还广泛使用了
gl_NormalMatrix
gl_ModelViewMatrix
gl_Vertex
,我认为这可能也是黑色输出的结果。我假设将
gl\u ModelViewMatrix*gl\u Vertex
替换为
uProjMatrix*uViewMatrix*uModelMatrix*vec4(反推展开,1.0)将产生相同的结果

(函数(){
var script=document.createElement(“脚本”);
script.onload=函数(){
main();
};
script.src=”https://mdn.github.io/webgl-examples/tutorial/gl-matrix.js";
document.head.appendChild(脚本);
})();
var initShader、peelShader、blendShader、finalShader;
var accumTex0,accumTex1;
变量backblenderbo,peeringsinglefbo;
var depthTex=[]、frontBlenderTex=[]、backtentex=[]、backlendertex=[];
var quadVAO;
var缓冲区;
函数main(){
const canvas=document.querySelector(“#glcanvas”);
const gl=canvas.getContext(“webgl2”,{alpha:false});
如果(!gl){
警报(“无法初始化WebGL。您的浏览器或计算机可能不支持它。”);
返回;
}
var ext=gl.getExtension(“ext\u color\u buffer\u float”);
if(!ext){alert(“无法初始化WebGL。您的浏览器或计算机可能不支持它”);return;}
quadVAO=新网格(gl);
drawBuffers=[gl.COLOR_附件0、gl.COLOR_附件1、gl.COLOR_附件2、gl.COLOR_附件3、gl.COLOR_附件4、gl.COLOR_附件5、gl.COLOR_附件6];
//双剥离渲染目标
BackLenderTex=newTexture(gl,gl.TEXTURE_2D,gl.RGBA32F,640,480,gl.RGBA,gl.FLOAT,null);
backblenderbo=newFramebuffer(gl[backBlenderTex]);
depthTex[0]=新纹理(gl,gl.TEXTURE_2D,gl.RG32F,640,480,gl.RG,gl.FLOAT,null);
frontBlenderTex[0]=新纹理(gl,gl.TEXTURE_2D,gl.RGBA32F,640,480,gl.RGBA,gl.FLOAT,null);
BackTestEx[0]=newTexture(gl,gl.TEXTURE_2D,gl.RGBA32F,640,480,gl.RGBA,gl.FLOAT,null);
depthTex[1]=新纹理(gl,gl.TEXTURE_2D,gl.RG32F,640,480,gl.RG,gl.FLOAT,null);
frontBlenderTex[1]=新纹理(gl,gl.TEXTURE_2D,gl.RGBA32F,640,480,gl.RGBA,gl.FLOAT,null);
BackTestEx[1]=新纹理(gl,gl.TEXTURE_2D,gl.RGBA32F,640,480,gl.RGBA,gl.FLOAT,null);
peelingSingleFBO=newFramebuffer(gl[depthTex[0],frontBlenderTex[0],BackTextex[0],depthTex[1],frontBlenderTex[1],BackLenderTex]);
bindFramebuffer(gl,null);
initShader=newShader(gl、vsInitSource、fsInitSource);
peelShader=newShader(gl、vsPeelSource、fsPeelSource);
blendShader=新闻hader(gl、vsBlendSource、fsBlendSource);
finalShader=新闻hader(gl、vsFinalSource、fsFinalSource);
总账禁用(总账消隐面);
绘图(gl);
}
//请参阅下面的链接以了解此功能
// https://stackoverflow.com/questions/37381980/get-some-trounble-when-using-drawbuffers-in-webgl2
函数getDrawBuffers(gl,…idx){
var缓冲区=[gl.NONE,gl.NONE,gl.NONE,gl.NONE,gl.NONE,gl.NONE,gl.NONE];
对于(变量i=0;i