在WebGL中绘制3D树结构

jks*_*der 7 gwt opengl-es webgl

我正在使用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

JAr*_*Are 2

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

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

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

最好的解决方案是几何实例化,但目前 WebGL 不支持它。