是否有人使用xtk和webgl2进行pick()调用?特别 renderer3d'第
错误:WebGL:drawArrays:检测到反馈循环... renderer3D.js:1977:7
错误:WebGL:readPixels:不推荐使用readPixels的越界读取,并且可能很慢。 renderer3D.js:1445:5
答案 0 :(得分:0)
对于第一个错误,反馈循环始终无效且WebGL中存在错误。来自WebGL 1 spec section 6.26
6.26纹理和帧缓冲区之间的反馈循环
在OpenGL ES 2.0 API中,可以进行写入和读取相同纹理的调用,从而创建反馈循环。它指定存在这些反馈循环的位置,导致未定义的行为。
在WebGL API中,导致此类反馈循环的操作(通过OpenGL ES 2.0规范中的定义)将生成INVALID_OPERATION错误。
对于第二个错误,它不是有效的WebGL错误。哪个浏览器生成该错误的版本?
这是WebGL一致性测试,以确保您可以读出界限
这里有一个显示读出范围的片段不会产生错误。
['webgl', 'webgl2'].forEach(check);
function check(version) {
log(`checking ${version}`);
const gl = document.createElement("canvas").getContext(version);
if (!gl) {
log(`${version} not supported`);
return;
}
const pixel = new Uint8Array(4);
// read off the left bottom
gl.readPixels(-10, -10, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pixel);
// read off the right top
gl.readPixels(400, 300, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pixel);
//
const error = gl.getError();
log(error ? `error was ${error} reading out of bounds`
: "there were no errors reading out of bounds");
}
function log(...args) {
const elem = document.createElement("pre");
elem.textContent = [...args].join();
document.body.appendChild(elem);
}