WebGL2中使用RGBA32F纹理创建帧缓冲区失败的问题求助
WebGL2中使用RGBA32F纹理创建帧缓冲区失败的问题求助
大家好,我最近在WebGL2里尝试用RGBA32F格式的纹理创建帧缓冲区,结果一直失败,控制台输出错误:test.js:38 Framebuffer is incomplete. Status: 36054,想请大家帮忙排查下问题。
以下是我的测试代码:
function main() { const canvas = document.getElementById('canvas'); const gl = canvas.getContext('webgl2'); // 用WebGL2来原生支持RGBA32F if (!gl) { console.error("WebGL 2.0 not supported."); return; } const targetTextureWidth = 256; const targetTextureHeight = 256; const targetTexture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, targetTexture); { const level = 0; const internalFormat = gl.RGBA32F; const border = 0; const format = gl.RGBA; const type = gl.FLOAT; const data = null; gl.texImage2D(gl.TEXTURE_2D, level, internalFormat, targetTextureWidth, targetTextureHeight, border, format, type, data); } // 创建并绑定帧缓冲区 const fb = gl.createFramebuffer(); gl.bindFramebuffer(gl.FRAMEBUFFER, fb); // 将纹理作为第一个颜色附件绑定 const attachmentPoint = gl.COLOR_ATTACHMENT0; const level = 0; gl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentPoint, gl.TEXTURE_2D, targetTexture, level); // 检查帧缓冲区状态 const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER); if (status !== gl.FRAMEBUFFER_COMPLETE) { console.error("Framebuffer is incomplete. Status: " + status); return; } console.log("Framebuffer is complete!"); } main();
我试过换成其他非32位浮点的internalFormat、format和type组合(参考WebGL2规范中的纹理格式表),帧缓冲区就能正常创建完成,唯独RGBA32F这个组合不行,实在摸不着头绪,有没有大佬能指点一下?
备注:内容来源于stack exchange,提问作者Rufus
相关产品推荐
相关产品推荐

