【问题标题】:libgdx mesh rendering in android does not startandroid中的libgdx网格渲染无法启动
【发布时间】:2014-03-08 18:19:43
【问题描述】:

我正在使用 libgdx 为桌面/Android 构建一个小游戏。如果在桌面上运行一切正常,但在 android 上有一个奇怪的问题。

当我从菜单画面切换到游戏画面时,我可以听到游戏画面的配乐,但画面没有变化。如果我点击屏幕,我会听到游戏声音,但画面保持不变(菜单屏幕)。最重要的是,这种情况并非每次都会发生 - 有时屏幕会正确更改,如果确实如此,游戏会运行良好且不会减速...

渲染代码如下,我发现如果我摆脱网格渲染,问题就会消失:

Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);

camera.update();
game.batch.setProjectionMatrix(camera.combined);

game.batch.begin();
    game.batch.draw(UI.LevelScreenSkin.getRegion("LevelBackGround"), UI.BG_TEXTURE_OFFSET_X, UI.BG_TEXTURE_OFFSET_Y, UI.BG_TEXTURE_WIDTH, UI.BG_TEXTURE_HEIGHT);
game.batch.end();

MainStage.act();
MainStage.draw();

//get updated mesh data from blocks
updateGlobalMeshData(false);
setGlobalMeshData();

//enable blending
Gdx.gl.glEnable(GL10.GL_BLEND);

//render blocks
globalMesh.render(GL10.GL_TRIANGLES, 0, ThisLevel.globalMesh.getMaxIndices());

//render blocks' borders

//enable texture binding
Gdx.graphics.getGL10().glEnable(GL10.GL_TEXTURE_2D);

//render borders
borderTexture.bind();
globalBorderMesh.render(GL10.GL_TRIANGLES, 0, globalBorderMesh.getMaxIndices());

//disable texture binding and blending
Gdx.graphics.getGL10().glDisable(GL10.GL_TEXTURE_2D);
Gdx.gl.glDisable(GL10.GL_BLEND);

第二个网格有大约 2000 个顶点,所以首先我想也许我的设备无法处理这些,但在游戏开始的情况下,一切运行良好,渲染也没有任何缓慢。

【问题讨论】:

    标签: android opengl-es libgdx render mesh


    【解决方案1】:

    当我切换到 OpenGL 2 时,问题得到了解决——这可能是设备向后兼容性的一些小故障......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      相关资源
      最近更新 更多