我目前正在写我的学士论文,该论文是关于使用 GWT 插件 gwt-g3d 创建仓库的 3D 可视化。
我已经能够非常有效地显示结构布局。gl.draw()
由于我将所有渲染保留在着色器中并最小化调用,因此以不错的帧速率渲染 200 万多个顶点。但是,我认为使用这种技术已经走到了死胡同,因为它是非常静态的。我需要的是一种使我的应用程序更加动态的方法。由于我习惯于 Java 中的面向对象编程,因此着色器语言很难让我理解。这就是我要说的...
我正在尝试以不同的方式(以不同的颜色开始)渲染我的可视化的多个区域(这些区域的数量在初始化时是未知的)。所以我在片段着色器中尝试了这样的事情:
...
uniform vec3 alteredCoords[]; //a coordArray of positions that i want to render alternatively
...
// color each of these coords in grey
for (int i = 0; i < alteredCoords.length(); i++) {
if ( position.x == alteredCoords[i].x && position.y == alteredCoords[i].y && position.z == alteredCoords[i].z) {
gl_FragColor = vec4(100.0/255.0, 100.0/255.0, 100.0/255.0, 1.0);
return;
}
}
我知道这不会按原样工作,因为数组需要恒定大小并且存在强制转换问题 - 现在尝试忽略它,因为无论如何这都不起作用,因为着色器语言不支持动态大小的数组。
我需要的是针对此问题的某种解决方法。有任何想法吗?
这是我目前布局的屏幕截图:
请注意,我已经为单个区域(灰色正方形)实现了我的想法——我所需要的只是一些以这种方式动态渲染多个区域的方法。