1

我想知道如何获得整个当前屏幕的位图。我想检查所选像素的 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 和游戏开发的新手。

4

3 回答 3

2

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

Image screenShot = new Image(ScreenUtils.getFrameBufferTexture());
于 2013-12-27T23:41:29.217 回答
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;

希望这可能对你有用

于 2013-06-28T09:14:15.277 回答
0

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

这就是东西的运作方式

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

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

于 2013-06-27T10:41:16.070 回答