2016-03-23 6 views
0

In der Mitte eines Spiels hätte ich gerne Zugriff auf die Pixel, die derzeit auf dem Bildschirm als eine Matrix (oder wirklich mehrere Matrizen) von RGB-Werten angezeigt werden . Gibt es einen einfachen Befehl, um darauf zuzugreifen?LibGDX - bekomme gerenderten Bildschirm als eine Matrix von RGB-Werten

+0

Die Klasse [ScreenUtils] (https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/ScreenUtils.html) hat ein paar Methoden, die den aktuellen 'FrameBuffer' als' byte [] ',' PixMap' oder sogar 'TextureRegion' zurückgeben. Ich schätze, das ist was du suchst. – Springrbua

Antwort

3

Sie können den Code aus [offizieller Libgdx Wiki verwenden [(https://github.com/libgdx/libgdx/wiki/Taking-a-Screenshot)

byte[] pixels = ScreenUtils.getFrameBufferPixels(0, 0, Gdx.graphics.getBackBufferWidth(), Gdx.graphics.getBackBufferHeight(), true); 

    Pixmap pixmap = new Pixmap(Gdx.graphics.getBackBufferWidth(), Gdx.graphics.getBackBufferHeight(), Pixmap.Format.RGBA8888); 
    BufferUtils.copy(pixels, 0, pixmap.getPixels(), pixels.length); 

    //Your logic here 

    pixmap.dispose(); 

Dann können Sie durch die Verwendung Pixmap Methode gewünschte Pixel erhalten:

getPixel(int x, int y) 

oder nur alle Pixel iterieren durch Verwendung als Schleifen

folgenden
for(int w = 0; w < pixmap.getWidth(); w++) 
     for(int h = 0; h < pixmap.getHeight(); h++) 
      getPixel(w, h); 

Denken Sie daran, dass Pixmap entsorgt werden muss. Liste der Objekte, die entsorgt werden müssen, finden Sie here

+0

Super, danke! – mkreisel

Verwandte Themen