gpt4 book ai didi

android - libgdx 中的星空优化

转载 作者:行者123 更新时间:2023-11-30 03:06:10 25 4
gpt4 key购买 nike

我想在 libgdx 中创建一个静态星域。

我的第一种方法是:在其上创建一个Decal 和一个DecalBatch。当我绘制 Decal 时,我在 Decal

上使用了 Billboarding 技术
star.decal.setRotation(camera.direction, camera.up);

下一步:我想为贴花上的 alpha 设置动画,所以我随机创建了一段时间:

star.decal.setColor(1, 1, 1, 0.6f+((float) Math.random()*0.4f) );

它工作正常,但我的 FPS 从 55 FPS 下降到 25 FPS(因为我有 500-1000 颗星)

我可以以任何方式只使用一个批处理调用吗?也许只有一个顶点列表和 GL_POINT 模式的 particleMaterial 始终面对我的相机?

我如何在 libgdx 中执行此操作?

最佳答案

Batch 比您需要的要复杂得多,在每一帧上,它都需要将 Sprite 的所有顶点复制到另一个数组中,并对它们进行计算以找到比例旋转等。正如您怀疑 GL_POINT Sprite 会更快,并且在中等范围的设备中,它应该能够以 60 fps 的速度呈现,例如具有不同位置和颜色的 2000 个点

这是我的一些旧代码,它是用 c 编写的,它使用 opengl es 1.1,并且可能会有一种更简单的方法可以在 libgdx 中执行此操作

glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnable (GL_POINT_SPRITE_OES);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, TXTparticle);
glTexEnvi(GL_POINT_SPRITE_OES, GL_COORD_REPLACE_OES, GL_TRUE);
glPointSize(30);
glColorPointer(4, GL_FLOAT, 32, particlesC);//particlesC the vertices color
glVertexPointer(3, GL_FLOAT, 24, particlesV);//particlesV the vertices
glDrawArrays(GL_POINTS, 0, vertvitLenght/6);
glDisable( GL_POINT_SPRITE_OES );
glDisable(GL_TEXTURE_2D);

glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);

关于android - libgdx 中的星空优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21780575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com