【发布时间】:2016-07-08 15:49:38
【问题描述】:
自从我使用 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,所以我不认为这是纹理问题。
我还应该检查什么才能绘制纹理?
【问题讨论】:
-
这是您的实际代码吗?调用
spriteBatch.begin()后跟stage.draw()将引发 RuntimeException。 -
stage.draw()在批次内部调用begin和end。要绘制其他内容,您需要将这些绘制调用包装在begin()和end()中。 -
奇怪。这是我的实际代码,我没有遇到异常。不过,将 batch.begin 移到绘图调用下方确实可以解决问题。 (作为答案发布,以便我接受)
-
你能展示你的
create方法吗?也许您正在使用两个精灵批次。如果没有传递给它的构造函数,Stage 会实例化它自己的。 -
我用一个空的构造函数来实例化 Stage,所以我可能确实有两个在使用,我会更正 - 感谢您的提示!
标签: java libgdx spritebatch