我想让LibGDX拍摄设备屏幕的截图,然后将截图加载到雪碧中以供以后渲染。但是,当我尝试它的应用程序崩溃与NullPointerException。我尝试了以下链接:taking screenshot in libgdx和using ScreenUtils to save screenshot as image in libgdx。当我尝试为Sprite创建纹理时,它会与NullPointerException一起崩溃。libgdx截图到雪碧
我也试过ScreenUtils.getFrameBufferTexture();方法和ScreenUtils.getFrameBufferPixmap()方法,但总是会发生NullPointerException异常。他们碰撞的线条根据我选择的屏幕截图的方式而变化,并且我已经确认在拍摄屏幕截图时确实创建了Pixmap或TextureRegion。当我尝试将它加载到Texture或Sprite中时,它会因NullPointerException而崩溃。
请不要将此标记为重复问题,因为我不是试图将屏幕截图保存为PNG。我试图直接在Sprite中使用它,它正在崩溃。
代码和堆栈跟踪创建TextureRegion:
// create the screen shot
UT.screenShot = ScreenUtils.getFrameBufferTexture(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
// Use screenshot
screenShot = new Sprite(UT.screenShot);
我得到这个堆栈跟踪:在线程
例外 “LWJGL应用程序” 显示java.lang.NullPointerException
at com.badlogic.gdx.graphics.g2d.TextureRegion.setRegion(TextureRegion.java:112)
at com.badlogic.gdx.graphics.g2d.Sprite.<init>(Sprite.java:83)
at *** MY CODE *** CompleteScreen.java:83
at *** MY CODE *** GameEngine.java:82
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:206)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
这只是我用来创建屏幕截图的方法之一。但所有的方式都使用ScreenUtils类来获取屏幕截图。所有这些方法确实创建了一个截图。但是,尝试创建Sprite或Texture时,所有这些方法都会失败。
代码和堆栈跟踪创建像素图:
// create the screen shot
UT.screenShot = ScreenUtils.getFrameBufferPixmap(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
// Use screenshot
Texture texture = new Texture(UT.screenShot);
screenShot = new Sprite(texture);
我得到这个堆栈跟踪:在线程
例外 “LWJGL应用程序” 显示java.lang.NullPointerException
at com.badlogic.gdx.graphics.glutils.PixmapTextureData.<init>(PixmapTextureData.java:37)
at com.badlogic.gdx.graphics.glutils.PixmapTextureData.<init>(PixmapTextureData.java:32)
at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:104)
at *** MY CODE *** CompleteScreen.java:84
at *** MY CODE *** GameEngine.java:82
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:206)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
为什么不发布任何方法的堆栈跟踪以及代码?如果没有任何有关例外的信息以及您的代码,我们无法提供帮助。 – Springrbua 2014-11-05 09:40:22