首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >libgdx TiledMap呈现性能问题

libgdx TiledMap呈现性能问题
EN

Stack Overflow用户
提问于 2014-02-19 16:14:07
回答 1查看 831关注 0票数 0

因此,我在libgdx项目中出现了性能问题,并将其跟踪到地图呈现。我通过创建一个空项目来隔离这个问题,并且尽量少做,只做地图渲染。这是我想出的代码:

桌面启动项目类:

代码语言:javascript
复制
package com.me.test;

import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;

public class Main {
public static void main(String[] args) {
    LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
    cfg.title = "performanceTest";
    cfg.useGL20 = false; // doesn't make a difference...
    cfg.width = 1080;
    cfg.height = cfg.width/12 * 9; // 810
    
    new LwjglApplication(new Test(), cfg);
}
}

“实际法典”:

代码语言:javascript
复制
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.maps.tiled.TmxMapLoader;
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;

public class Test implements ApplicationListener {
private OrthographicCamera camera;
private com.badlogic.gdx.maps.tiled.TiledMap map;
private static  OrthogonalTiledMapRenderer renderer;

@Override
public void create() {      
    float w = Gdx.graphics.getWidth();
    float h = Gdx.graphics.getHeight();
    
    camera = new OrthographicCamera(w, h);

    TmxMapLoader maploader = new TmxMapLoader();
    
    map = maploader.load("test.tmx");
    renderer = new OrthogonalTiledMapRenderer(map, 1);
    renderer.setView(camera);

}

@Override
public void dispose() {
    renderer.dispose();
    map.dispose();
}

@Override
public void render() {      
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
    
    renderer.render();
}

@Override
public void resize(int width, int height) {
}

@Override
public void pause() {
}

@Override
public void resume() {
}
}

现在奇怪的是:不仅CPU使用率高得离谱,而且当需要呈现128多个CPU时,CPU使用量也会猛增。在129瓦以下,性能总是一样的。(只有这个过程约2-4% ),但渲染129块或更多的瓷砖大约需要40-60%!现在我的问题是:为什么?我做错了什么吗?我无法想象libgdx的渲染器会有如此致命的缺陷..。在屏幕上只使用128个瓷砖制作一个游戏并不是一个选择:)

谢谢你的回答和想法!

环境:

  • 日食开普勒服务第1版
  • libgdx版本0.9.9
  • Windows 7
  • 图形芯片: NVIDIA GeForce GTX 560 Ti
  • CPU:奔腾双核2.70GHz

绘制128块瓷砖:

绘制129块瓷砖:

EN

回答 1

Stack Overflow用户

发布于 2014-02-19 22:14:13

我找到了解决办法:

只需加上

代码语言:javascript
复制
Mesh.forceVBO=true;

在应用程序启动之前。

首先,这可能是一个硬件问题。在其他电脑上,一切都运行得很顺利,但也有其他人也有同样的问题。在BadlogicGames论坛上,我找到了更详细的答案:

Badlogic论坛邮报

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

https://stackoverflow.com/questions/21886121

复制
相关文章

相似问题

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