自从我使用LibGdx以来已经有一段时间了,所以我觉得我只是错过了一些明显的东西。
我在MyGdxGame中的渲染方法看起来像这样,调用舞台绘制自己(及其演员),然后我尝试绘制一组纹理用于调试目的。
@Override
public void render()
{
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
StageManager.getCurrentStage().act();
spriteBatch.begin();
StageManager.getCurrentStage().draw();
for(int i = 0; i < 100; i++)
{
spriteBatch.draw(TextureManager.getPlayerTexture(), 50*i, 50*i);
}
}
舞台与其一个演员一起绘制,但其他纹理未被绘制。
我尝试过:在舞台相机上设置批量投影矩阵(调用update
后),确保纹理坐标可见。
演员从同一个TextureManager.getPlayerTexture
获取其纹理,所以我不认为它是纹理问题。
我还应该检查什么才能获得纹理?
答案 0 :(得分:1)
通常,您的代码会导致RuntimeException,因为您在绘制阶段之前在批处理上调用begin。但是因为你实际上有两个sprite批次(一个是舞台内部的,因为你没有与它共享原始版本),所以不会发生实际错误。
在绘制纹理后,您错过了对spriteBatch.end()
的调用。对spriteBatch.begin()
的调用需要在stage.draw()
之后移动。
你应该将精灵批量传递给Stage构造函数,因为拥有多个精灵批处理是浪费的。每个精灵批处理使用相当数量的内存并编译着色器。