7

我正在按照此处显示的技术使用 gwt-g3d 库在 WebGL 中绘制大型有向无环图:http ://www-graphics.stanford.edu/papers/h3/

至此,我有一个简单的两级图形渲染:

在此处输入图像描述

性能很糟糕——渲染这个东西大约需要 1.5-2 秒。我不是 OpenGL 专家,所以这是我采用的一般方法。也许有人可以指出一些可以更快地进行渲染的优化。

在此处输入图像描述

我很惊讶将 MODELVIEW 矩阵和缓冲区推送到显卡需要多长时间。这是浪费大部分时间的地方。我应该改为在顶点着色器中进行 MODELVIEW 转换吗?

这让我相信操纵 MODELVIEW 矩阵并为每个节点推送一次应该不是一个坏习惯,但时间不会说谎:

https://gamedev.stackexchange.com/questions/27042/translate-the-modelview-matrix-or-change-vertex-coordinates

4

1 回答 1

2

将节点分组到更大的块中,而不是单独渲染它们。使用很可能不会被修改的应用转换对所有几何图形进行后台缓存,并将其存储在一个缓冲区中并在一次调用中渲染。

另一种解决方案:将节点(框+线)存储在一个缓冲区中(您可以存储比当前需要的更多)及其在纹理中的转换。基于节点索引(纹理坐标)在顶点着色器中应用转换它应该更快更快。

要测试支持,请使用此站点。我有MAX_VERTEX_TEXTURE_IMAGE_UNITS | 4

最好的解决方案是Geometry Instancing,但目前 WebGL 不支持它。

于 2012-11-17T05:10:19.497 回答