[英]LibGDX 3D low fps on android
我剛開始學習使用libgdx渲染3D(使用Xoppa教程),並且在使用.G3DB對象作為android上的模型時遇到了幀率問題。
我從blender導入一個對象(我以前用fbx轉換器轉換為.g3db),它在桌面上工作正常(60fps)但在android上我得到5fps(我使用的是Nexus 5設備)。 所以我嘗試用相同的代碼渲染一個立方體,然后我沒有性能問題,它再次平滑運行(模型包含289個頂點)。
我在論壇上搜索,但沒有發現任何幫助我解決問題的方法。 我的代碼中的G3dModelLoader是一個問題嗎?
有誰能夠幫助我?
謝謝
NB:抱歉我的英文
<!-- language-all: lang-java -->
private PerspectiveCamera camera;
private ModelBatch modelBatch;
private Model model;
private Model box;
private ModelInstance modelInstance;
private Environment environment;
private CameraInputController camController;
private ModelInstance boxInstance;
@Override
public void create() {
camera = new PerspectiveCamera(40,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
camera.position.set(0f,-30f,0f);
camera.lookAt(0f,0f,0f);
camera.near = 0.1f;
camera.far = 60.0f;
camera.update();
modelBatch = new ModelBatch();
// Blender object
UBJsonReader jsonReader = new UBJsonReader();
G3dModelLoader modelLoader = new G3dModelLoader(jsonReader);
model = modelLoader.loadModel(Gdx.files.getFileHandle("data/hill.g3db", FileType.Internal));
modelInstance = new ModelInstance(model,0,0,0);
// Cube object
ModelBuilder modelBuilder = new ModelBuilder();
box = modelBuilder.createBox(2f, 2f, 2f, new Material(ColorAttribute.createDiffuse(Color.BLUE)), VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal);
boxInstance = new ModelInstance(box,0,0,0);
environment = new Environment();
environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.8f, 0.8f, 0.8f, 1.0f));
environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.2f));
camController = new CameraInputController(camera);
camController.scrollFactor=-0.05f;
camController.pinchZoomFactor=2f;
Gdx.input.setInputProcessor(camController);
camController.update();
}
@Override
public void dispose() {
modelBatch.dispose();
model.dispose();
box.dispose();
}
@Override
public void render() {
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT | GL30.GL_DEPTH_BUFFER_BIT);
modelBatch.begin(camera);
modelBatch.render(modelInstance, environment);
System.out.println(Gdx.graphics.getFramesPerSecond());
modelBatch.end();
}
轉換為.g3dj后,我看到該文件很大,我以某種方式在一個.fbx中導出了幾個對象......所以這是我的錯誤(該文件占用了15倍的空間並導致設備速度變慢)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.