【问题标题】:WebGL Buffer Size LimitWebGL 缓冲区大小限制
【发布时间】:2011-06-30 20:26:30
【问题描述】:

我今天在做一个关于点集可视化的项目时,遇到了一个关于 WebGL 的小问题。我知道 drawElements 中存在索引限制,因为索引是 16 位 整数。然而,根据this post 的说法,没有 drawArrays,我通过能够向 GPU 发送大约 400k 点来确认这一点。

问题是,一旦我尝试了 400k,我想探索 WebGL 的可能性,我尝试了 3M 顶点模型。砰!什么都没有显示,WebGL 检查器没有显示 drawArrays 调用。

您知道直接调用 drawArray 的某种限制吗?

【问题讨论】:

  • 我一直在翻阅 Chromium 源代码,想看看能不能找到适合你的东西。 drawArrays() 函数调用 gles2::DrawArrays()... 我仍在尝试追踪那个。
  • This 文件包含drawArrays() 的代码,然后它调用helper_->DrawArrays(...),这又导致this 文件中的DrawArrays() 函数。嗯...
  • 我猜它会以某种方式导致this 文件和glDrawArrays() 函数存在。
  • 我的想法是,这可能是硬件限制。但我在规范上找不到任何关于它的信息。而且 3M 顶点对于当前的显卡来说似乎并不多……

标签: javascript webgl


【解决方案1】:

这里似乎已经讨论/回答了相同的问题:Is there a limit of vertices in WebGL?。在那个帖子中,brainjam 的帖子说他发现 drawArrays 不限于 65k。

【讨论】:

  • 我已经看到并引用了这篇文章。它没有说明 drawArrays 的实际限制,只是对于 drawElements,您不能索引超过 65k 的元素。
  • 也许我不知道您在寻找什么,但我认为 drawArrays 及其限制已在此答案中专门讨论过:stackoverflow.com/questions/4998278/…
【解决方案2】:

听起来你有一个过时的驱动程序。 drawArrays()的定义:

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

计数元素是一个长整数,这意味着在 32 位架构中至少有 2^32 个元素,在 64 位架构中至少有 2^64 个元素。

请记住,与任何人想象的不同,Chrome/Chromium 和 Firefox 都使用 Direct3D 作为 Windows 上 WebGL 的底层技术。

【讨论】:

  • 我在 Linux 上使用 Chromium,所以我想这不是 Direct3D 问题。我将深入研究硬件规范,可能就在这里......但我很困惑,这应该在某个地方明确说明!
猜你喜欢
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-25
  • 2017-05-05
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多