小编Squ*_*die的帖子

LibGDX截图奇怪的行为

我遇到了一个在LibGDX中截取我的桌面应用程序的相当奇怪的行为.我重新制作了一个小程序来重现这个"bug",它只渲染黑色背景和红色矩形.那些图像是结果:

在此输入图像描述 在此输入图像描述

左边是来自窗口屏幕剪辑工具的屏幕截图,这就像运行程序一样.右边是我发布的屏幕截图代码.为了澄清,我希望程序的屏幕截图能够获得左图像的结果,而不会让透明度变得非常奇怪.

这是我的渲染代码,不介意坐标.因为我可以看到矩形被完美呈现,所以对于我在渲染方法中的错误没有任何意义.但无论如何我都会张贴它.

@Override
public void render() {

    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    Gdx.gl.glActiveTexture(GL20.GL_TEXTURE0);
    Gdx.gl.glEnable(GL20.GL_BLEND);
    Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA);

    shape.begin(ShapeType.Filled);
    shape.setColor(Color.BLACK);
    shape.rect(0, 0, 300, 300);

    shape.setColor(1f, 0f, 0f, 0.5f);
    shape.rect(100, 100, 100, 100);
    shape.end();

    Gdx.gl.glDisable(GL20.GL_BLEND);

}
Run Code Online (Sandbox Code Playgroud)

这是截取屏幕截图的代码:

public static void screenshot() {

    Pixmap pixmap = getScreenshot(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    PixmapIO.writePNG(new FileHandle(Gdx.files.getLocalStoragePath() + "screenshots/test.png"), pixmap);
    pixmap.dispose();

}

private static Pixmap getScreenshot(int x, int y, int w, int h) {
    final Pixmap pixmap = ScreenUtils.getFrameBufferPixmap(x, y, w, h);

    // Flip the pixmap upside down
    ByteBuffer pixels = pixmap.getPixels(); …
Run Code Online (Sandbox Code Playgroud)

java screenshot libgdx

5
推荐指数
1
解决办法
300
查看次数

标签 统计

java ×1

libgdx ×1

screenshot ×1