首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL:呈现大量多维数据集

OpenGL:呈现大量多维数据集
EN

Stack Overflow用户
提问于 2014-04-08 21:00:20
回答 4查看 1.9K关注 0票数 3

我正在尝试创建一个包含单元立方体(或球体)的600x600x600网格。只有一些立方体存在。所以,基本上,我试着像下面这样的小立方体或球体。

问题1:呈现这样的结构代价很高。它需要3个嵌套循环(600个迭代中的每个循环)。有什么办法解决这个问题吗?

我的想法是将附近的立方体合并成一个单一的立方体(oct-tree),因为在我的例子中不会有太多的缺口。但我想要一个通用的解决办法。你认为渲染这样一个场景需要多长时间(看起来像是250 x250x250)?

问题2:实例呈现与我的问题有关吗?

注意事项:这里我将体素表示为一个立方体,而这个立方体又需要6个四边形。

EN

回答 4

Stack Overflow用户

发布于 2014-09-19 13:43:25

我以前做过体素渲染引擎。下面是一些我可以建议的快速优化,这些优化会给您带来很好的速度提升:

  1. 使用几何剔除算法对未呈现的位进行裁剪。我用的是十叉树,因为它们和体素搭配得很好。
  2. 对前面的可见节点进行排序,然后使用一些算法来确定哪些节点根本看不到。同时,要充分利用遮挡剔除。
  3. 像别人建议的那样使用几何图形着色器。
  4. 有一个LOD计划到位。简单地说,如果两个多维数据集可以连接成一个,那么用户将无法察觉结果,那么就这样做。良好的LOD方案可以极大地减少您所感兴趣的数据量。
  5. 记住,最好的多边形是一个根本没有绘制的多边形:)。

正确地做这三件事会给你很大一部分你想要的刺激。在此之后,它将根据您的需要和需求进行微调。

票数 3
EN

Stack Overflow用户

发布于 2014-04-08 21:12:30

实际上,问题1可以通过将不同的多维数据集组合成一个大立方体来处理。体素引擎通常将多个单独的盒子分组在一起。这也许是最好的办法。其次,可以对每个体素以及包含这些体素的块使用一个布尔变量,并将其设置为呈现1,否则设置为0。您将需要一个voxel类、一个块类和一些其他抽象,这取决于您的需求。

票数 0
EN

Stack Overflow用户

发布于 2014-04-09 09:03:08

也许可以创建一个几何图形着色器,为网格中的每个点复制一个盒子。编程的着色器智能,使它不输出边,转离视图,没有边的地方有一个“活动”框相邻。

问题是提供几何着色器600*600*600大小的布尔值。如果复合"object“有点坚固--也许您只需要在每一行/每列上提供起始和结束位置,那么: 1,4, 90 ,345意味着填充从1到4的位置,从90到345填充多维数据集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22948068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档