如何使用Libgdx获取整个屏幕的位图?

时间:2013-06-27 10:11:15

标签: android bitmap libgdx

我想知道如何获得整个当前屏幕的位图。我想检查所选像素的RGBA值。我的代码无法正常工作:

public class PixmapTest implements Screen
{
     //(...)

     private float getRedValue(int x, int y)
     {
          Pixmap pixmap = new Pixmap(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), Pixmap.Format.RGBA8888);
          Color color = new Color();
          Color.rgba8888ToColor(color, pixmap.getPixel(x,y));
          pixmap.dispose();
          return color.r;
     }

     @Override
     public void render()
     {
          Gdx.gl.glClearColor(1f, 0f, 0f, 1f);
          Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
          System.out.println(getRedValue(50, 50));
     }
}

在我看来, getRedValue 方法应返回 1.0 ,但返回 0.0 。我为无关紧要的问题道歉。我也是Libgdx和游戏开发的新手。

3 个答案:

答案 0 :(得分:2)

最简单的方法是使用ScreenUtils包,例如

Image screenShot = new Image(ScreenUtils.getFrameBufferTexture());

答案 1 :(得分:1)

您所做的是创建了一个不包含任何内容的空白像素图。 Kumar Saurabh是对的,您需要拍摄该图像的屏幕截图以及获取像素值的功能。

你可以这样做

final Pixmap pixmap = new Pixmap(w, h, Format.RGBA8888);
ByteBuffer pixels = pixmap.getPixels();
Gdx.gl.glReadPixels(x, y, w, h, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, pixels);
Color color = new Color();
Color.rgba8888ToColor(color, pixmap.getPixel(x,y));
pixmap.dispose();
return color.r;

希望这可能对你有用

答案 2 :(得分:0)

https://code.google.com/p/libgdx-users/wiki/Screenshots

这就是工作的方式

不要忘记获取PNG.java类,因为主要逻辑只在其中

此外,如果您正在使用LibGdx 0.9.8,这些类隐式包含在gdx.jar中