libgdx ScreenShot照片损坏

时间:2019-01-08 13:18:33

标签: opengl libgdx

我的屏幕快照照片无法打开,写为“似乎已损坏,损坏或太大”。在桌面上使用Windows照片查看器打开时。但是,我确实能够在游戏中看到我创建的纹理(来自getFullTexture()函数)。任何人都可以帮忙。

我的代码如下:

 public static Texture getFullTexture(){
    if(Gdx.app.getGraphics().getGLVersion().isVersionEqualToOrHigher(2,0))
    {
        Texture texture = new Texture(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), Pixmap.Format.RGB888);

        Gdx.gl.glEnable(GL20.GL_TEXTURE_2D);
        Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0);
        texture.bind();
        Gdx.gl.glCopyTexImage2D(GL20.GL_TEXTURE_2D, 0, GL20.GL_RGB, 0, 0,Constant.REAL_DEVICE_WIDTH, Constant.REAL_DEVICE_HEIGHT, 0);
        Gdx.gl.glDisable(GL20.GL_TEXTURE_2D);

        return texture;
    }
}


public static void saveImage(Texture photoTexture){
    try{
        if (!photoTexture.getTextureData().isPrepared()) {
            photoTexture.getTextureData().prepare();
        }
        Pixmap pixmap = photoTexture.getTextureData().consumePixmap();
        FileHandle fh;

        do{
            fh = new FileHandle(Gdx.files.getExternalStoragePath() + "test.jpg");
        }while (fh.exists());
        PixmapIO.writePNG(fh, pixmap);
        pixmap.dispose();
    }catch (Exception e)
    {

    }
}

我尝试了其他纹理的saveImage()函数,没有错误。只有不适用于getFullTexture()函数的纹理。

我主要的代码用途:

ScreenShotFactory.saveImage(getFullTexture());

0 个答案:

没有答案