Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android libgdx中的Starfield优化_Android_Libgdx - Fatal编程技术网

Android libgdx中的Starfield优化

Android libgdx中的Starfield优化,android,libgdx,Android,Libgdx,我想在libgdx中创建一个静态星域 我的第一个方法是:创建一个贴花,并在其上创建一个贴花批。 当我绘制贴花时,我在贴花上使用广告牌技术 star.decal.setRotation(camera.direction, camera.up); 下一步:我想为贴花上的字母设置动画,所以我在某个时候以随机方式创建了: star.decal.setColor(1, 1, 1, 0.6f+((float) Math.random()*0.4f) ); 它正在工作,但我的FPS从55 FPS下降到25

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

我的第一个方法是:创建一个贴花,并在其上创建一个贴花批。 当我绘制贴花时,我在贴花上使用广告牌技术

star.decal.setRotation(camera.direction, camera.up);
下一步:我想为贴花上的字母设置动画,所以我在某个时候以随机方式创建了:

star.decal.setColor(1, 1, 1, 0.6f+((float) Math.random()*0.4f) );
它正在工作,但我的FPS从55 FPS下降到25 FPS(因为我的500-1000颗星)

我可以以任何方式只使用一个批处理调用吗?也许是一个只有一个顶点列表的特殊材质,并且具有始终面向我的相机的GL_点模式


如何在libgdx中执行此操作?

批处理比您需要的复杂得多,在每个帧上,它需要复制另一个数组中精灵的所有顶点,并对其进行计算以找到缩放旋转等。。 正如您所怀疑的那样,Glu POINT sprites会更快,在中等范围的设备中,它应该能够以60 fps的速度渲染,就像2000个具有不同位置和颜色的点一样

这是我的一些老代码,它是用c编写的,它使用OpenGLES1.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);

一批电话是什么意思?你在安卓设备上也有很多动画明星。你解决了吗?你有一些示例代码吗?