首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Libgdx的高效三维块绘制

基于Libgdx的高效三维块绘制
EN

Stack Overflow用户
提问于 2014-03-12 09:43:32
回答 1查看 4.9K关注 0票数 1

首先,我对3D编程和libgdx非常陌生。我看了几个教程,我已经呈现了我想要的场景。我有一些1x1x1块,是用ModelBuilder.createRect()为每个可见的面创建的,所以如果另一个块覆盖了这个块的一个面,就没有为这个块创建rect。另外,不需要顶部和底部的直角,因为我永远看不到它们(除了地板)。所以我想,这是相当有效的。我还启用了Backface cullingViewfrustum culling。然而,如果我朝一个方向看,在我的视野中有很多街区,那么FPS就会下降到15-20个。这对我来说还是可以的,因为我的笔记本电脑已经5年多了,而且性能也不是最好的,但是this answer让我觉得。

"ModelBuilder仅用于调试“。好吧,但是我该怎么创建我的盒子呢?为什么我要为简单的方块在建模应用程序(如Blender)中创建一个Model?通过这样做,我甚至不能剔除那些被其他街区占据的面孔。因此,我的问题是:我如何才能创建和渲染这些盒子最有效的方式?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-13 21:25:21

ModelBuilder#createRect将为每个矩形创建一个新模型。当呈现一个( a)模型实例时,它意味着一个抽签调用。因此,ModelBuilder#createRect效率极低。最好将多个矩形组合成单个模型(a的一部分)。这可以使用以下方法完成:

代码语言:javascript
复制
modelBuilder.begin();
MeshPartBuilder mpb = modelBuilder.part(....);
mpb.rect(...); // first rect.
mpb.rect(...); // second rect.
// etc.
Model model = modelBuilder.end();

请注意,这仍然不够有效,例如,体素引擎。如果您的目标是优化体素,您可能希望在自定义RenderableProvider中构建网格(在搜索结果和深度排序之后)。下面是一个例子:https://github.com/libgdx/libgdx/tree/master/tests/gdx-tests/src/com/badlogic/gdx/tests/g3d/voxel

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

https://stackoverflow.com/questions/22347445

复制
相关文章

相似问题

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