libgdx Скриншот фото поврежден - PullRequest
0 голосов
/ 08 января 2019

Моя фотография со скриншота не может быть открыта, написано "кажется, что она повреждена, повреждена или слишком велика". при открытии с 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());
...