javascript - 即使有足够的缓冲区空间,WebGL 也无法绘制超过 44 个点

标签 javascript webgl

正如标题所示,我有一个 WebGL 应用程序。我正在以这种方式使用drawArrays

gl.drawArrays(gl.LINES, 0, 44);

但我似乎遇到了一个问题,如果我尝试绘制超过 44 个点,则会出现以下错误

[.WebGL-0x7000c6e700] GL_INVALID_OPERATION: Vertex buffer is not big enough for the draw call

我已经检查以确保我有足够的缓冲区空间,甚至对值进行硬编码,它发生在我使用的任何浏览器上。

我认为问题出在我的笔记本电脑(M1 MacBook Pro)上,因为当我将代码移至 Windows 桌面时,它运行良好。

//编辑 至于代码示例

// points is an array of 46 points i.e. [[0,0,1,1],....]
let wBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, wBuffer);

gl.bufferData(gl.ARRAY_BUFFER, flatten(points), gl.STATIC_DRAW);

let vPosition = gl.getAttribLocation(program, "vPosition");
gl.vertexAttribPointer(vPosition, 4, gl.FLOAT, false, 0, 0);
gl.enableVertexAttribArray(vPosition);

gl.drawArrays(gl.LINES, 0, 46);

最佳答案

我不确定其工作原理的具体细节,但关闭浏览器上的硬件加速为我解决了这个问题。

关于javascript - 即使有足够的缓冲区空间,WebGL 也无法绘制超过 44 个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71846106/

相关文章:

javascript - 三.js/WebGL : Large spheres appear broken at intersection

javascript - WebGL 中的切换着色器程序

google-chrome - webgl 照明着色器适用于 Firefox,但不适用于 chrome

canvas - 折纸类折纸动画推荐的 JS 库

javascript - 如何测试 Three.js 中光线拾取的错误?

javascript - Dynamics CRM 2013 - 保存 PDF 格式的自定义 SSRS 报告

javascript - 如何删除动态创建的 div?

javascript - Protovis 中的树状图

javascript - 我正在尝试使用 jquery 或 javascript 回调一个简单的动画

php - 如何防止 chrome 使用 Comet 获取 'Aw snap!' ?