我们可以用 webgl 绘制的网格的最大限制是多少
what is the maximum limit of the grid we can draw with webgl
目前,我正在做一个项目,我需要绘制一个大小为 N * N 的网格。
这里 N 的大小可以 998.I 已经成功绘制了尺寸为 108 * 108 的矩阵。但是当我尝试使用尺寸为 216 * 216 进行绘制时,它只显示了矩阵的一半。结果可以在给定的图像中看到
我尝试调试,但我很确定我的代码中的一切都是正确的。
这是我的实现。
我想知道画图有没有限制。如果有限制,谁能解释一下?
我没有完全阅读你的代码,但我在使用 Uint16Array
存储索引时遇到了类似的问题。这意味着您正在使用的顶点数量将需要您使用 32 位索引缓冲区。
尝试将您的代码更改为:
var indices = new Uint32Array(nrElems * nrElems * 2 * 3);
var linesIndices = new Uint32Array(nrElems * nrElems * 2 * 4);
也为您的 gl.drawElements
调用使用 gl.UNSIGNED_INT
而不是 gl.UNSIGNED_SHORT
。
根据 gman 的评论,您还必须检查是否启用了 OES_element_index_uint 扩展,否则您会收到错误消息
您可能也对此感兴趣answer
目前,我正在做一个项目,我需要绘制一个大小为 N * N 的网格。 这里 N 的大小可以 998.I 已经成功绘制了尺寸为 108 * 108 的矩阵。但是当我尝试使用尺寸为 216 * 216 进行绘制时,它只显示了矩阵的一半。结果可以在给定的图像中看到
我尝试调试,但我很确定我的代码中的一切都是正确的。
这是我的实现。
我想知道画图有没有限制。如果有限制,谁能解释一下?
我没有完全阅读你的代码,但我在使用 Uint16Array
存储索引时遇到了类似的问题。这意味着您正在使用的顶点数量将需要您使用 32 位索引缓冲区。
尝试将您的代码更改为:
var indices = new Uint32Array(nrElems * nrElems * 2 * 3);
var linesIndices = new Uint32Array(nrElems * nrElems * 2 * 4);
也为您的 gl.drawElements
调用使用 gl.UNSIGNED_INT
而不是 gl.UNSIGNED_SHORT
。
根据 gman 的评论,您还必须检查是否启用了 OES_element_index_uint 扩展,否则您会收到错误消息
您可能也对此感兴趣answer