Ben*_*nnX 1 java opengl textures libgdx texture-atlas
我正在重构我在libgdx中开发的小RPG.
我有一个普遍的问题,如何正确使用纹理图集.我有100个精灵和大约10种精灵.目前我不使用地图册,但我想增加渲染性能,因为如果我的游戏循环,这是唯一需要花费很长时间的东西.(得到大约100个绑定和15个渲染调用...)
所以它看了一下git的TextureAtlasClass 链接,并想知道我是如何从它获得更多性能的.如果我用正确的纹理得到它的精灵,我会得到一个副本,所以我仍然会切换OpenGL绑定吗?所以这不是一个更好的解决方案,如果我有100个演员都拥有它自己的精灵,或者我错了它,我只是没有做到这一点?
Atlas本身确实建议不要getsprite多次调用,但我需要这样做,这样每个actor都拥有自己的sprite并拥有自己的状态.
也许你可以给我一个小例子如何在不切换OpenGL绑定的情况下使用来自一个地图集的多个精灵.这应该是使用地图集的原因,但我现在还没有得到它.
如果我用正确的纹理得到它的精灵,我会得到一个副本,所以我仍然会切换OpenGL绑定吗?
不,你得到它的TextureRegion.(Sprite是一个更专业的TextureRegion).
因此,当你绘制所有精灵时,如果它们来自同一个TextureAtlas,它们只需要一次绘制.
我该如何实现呢?在渲染时没有New绑定的情况下获得具有相同纹理区域的多个精灵?
只需使用TextureAtlas #createSprite:
sprite = textureatlas.createSprite("example");
Run Code Online (Sandbox Code Playgroud)
当你绘制它们时,例如:
batch.begin();
sprite.draw(batch)
sprite2.draw(batch);
sprite3.draw(batch);
batch.end();
Run Code Online (Sandbox Code Playgroud)
如果3个精灵来自同一个TextureAtlas,它们只会冲洗批次一次.
编辑
TextureRegion仅是引用纹理(图集)的坐标和大小(矩形).别担心,纹理没有被复制.它唯一一个,无论你创造了多少精灵:)