WebGL缓冲区大小限制

4
我今天在进行点集可视化项目时遇到了一个小问题,与WebGL有关。我知道在drawElements中存在索引限制,因为索引是16位整数。 然而根据这篇文章的说法,drawArrays没有限制,我通过将约400k个点发送到GPU来证实了这一点。
问题是,一旦我尝试使用400k个点,我就想探索WebGL的可能性,于是我尝试了一个包含3M个顶点模型。砰! 什么都没有显示,WebGL检查器也没有显示drawArrays调用。
你是否了解直接drawArray调用的某种限制?

我一直在研究Chromium源代码,试图找到一些有用的东西。drawArrays()函数调用了gles2::DrawArrays()... 我还在努力追踪它。 - Nathan Osman
иү™дёҒ文件包含дғ†drawArrays()зљ„д»Әз ЃпәЊе®ѓеЏ€и°ѓз”Ёдғ†helper_->DrawArrays(...)пәЊиү›иЂЊеҮәи‡өдғ†иү™дёҒ文件中的DrawArrays()е‡Ңж•°гЂ‚е—Ү... - Nathan Osman
我猜这与这个文件和其中的glDrawArrays()函数有关。 - Nathan Osman
我认为可能是硬件限制,但我在规格说明书上找不到任何相关信息。而且对于当前的显卡来说,300万个顶点似乎并不算多... - F.X.
2个回答

2

听起来你的驱动程序过时了。drawArrays() 函数的定义:

void drawArrays(enum mode, int first, long count)

count elements是一个长整数,这意味着在32位体系结构中至少有2^32个元素,在64位架构中为2^64个。

请记住,与任何人可能推测的不同,Chrome / Chromium和Firefox在Windows上使用Direct3D作为WebGL的基础技术。


我在Linux上使用Chromium, 所以我猜这不是Direct3D问题。我将深入研究硬件规格,那可能在这里...但我感到困惑,这应该明确地说明在某个地方! - F.X.

2

我已经看到并引用了这篇文章。它并没有提到 drawArrays 的实际限制,只有对于 drawElements,您无法索引超过 65k 个元素。 - F.X.
也许我不知道你具体在寻找什么,但我认为 drawArrays 及其限制在这个回答中有详细讨论:https://dev59.com/22445IYBdhLWcg3wLXMK#5843868。 - jfriend00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接