尝试在Android的LibGDX中将文本绘制到Texture
时遇到错误。我当前正在加载Texture
,创建FrameBuffer
,使用Texture
将FrameBuffer
绘制到SpriteBatch
上,然后从FrameBuffer
抓取纹理数据以转回Texture
。我还没有字体绘制设置(它也将使用SpriteBatch
,绘制为FrameBuffer
,但稍后再进行。)
这是我的代码:
private static FrameBuffer fbo;
private static SpriteBatch batch;
public static SpriteDrawable getTextureWithText(String text) {
try {
Texture texture = new Texture(Gdx.files.internal("image.png"));
fbo = new FrameBuffer(Format.RGBA8888, texture.getWidth(), texture.getHeight(), false);
fbo.begin();
Gdx.gl.glClearColor(0f, 0f, 0f, 0f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(texture, 0, 0, texture.getWidth(), texture.getHeight());
// Here I would render text too,
// however I have not yet attempted this as the
// converting to and from an FBO will not work.
batch.end();
fbo.end();
texture = fbo.getColorBufferTexture();
return new SpriteDrawable(new Sprite(texture));
} catch (Exception e) {
e.printStackTrace();
}
}
但是,在我的LibGDX多屏幕项目中,我的应用程序将不会从初始屏幕移到包含LibGDX
Image
对象的屏幕上。 LogCat中反复显示以下错误:12-16 19:02:25.623 20311-20349/uk.jamco.application.android W/Adreno-EGLSUB: <SwapBuffers:1352>: Invalid native buffer. Failed to queueBuffer
12-16 19:02:25.623 20311-20356/uk.jamco.application.android W/Adreno-EGLSUB: <updater_thread:428>: native buffer is NULL
这里有人可以帮助我解决我的问题吗?
提前致谢!
最佳答案
我设法解决了自己的问题。我没有初始化SpriteBatch
对象,这导致了不相关的外观错误。很抱歉浪费任何人的时间,如果他们阅读此书,但现在我将结束问题。