2017-12-31 135 views
0

Ich versuche, ein 2D-Kollisionserkennungssystem für mein Spiel in Java/LWJGL/OpenGL zu machen.Wie funktioniert glReadPixels in OpenGL/LWJGL?

Mein Problem ist das glReadPixels() wirkt seltsam und ich weiß nicht was ich falsch mache.

Das Problem ist normalerweise gibt es den perfekten RGBA-Code des Pixels zurück, aber manchmal gibt es negative Zahlen oder Farben, die nicht auf meinem Bildschirm sind. (Für Alpha bekomme ich immer -1)

Was kann dieses Problem verursachen?

Mein Code:

int size = 10; 

    ByteBuffer pixels = BufferUtils.createByteBuffer(width * height * 4); 

    glReadPixels(100, 500, size, size, GL_RGBA, GL_UNSIGNED_BYTE, pixels); 

Ich denke über vielleicht die schlechten Parametern ich? (GL_RGBA, GL_UNSIGNED_BYTE)

Was soll ich verwenden?

+0

Sie fragen ** unsigned ** Bytes ab. Wenn Sie eine -1 sehen, dann sehen Sie nicht vorzeichenlose Bytes (die nicht -1 sein können), sondern irgendeine Art von signierter Repräsentation. – BDL

+0

Vielleicht hilft der Abschnitt ["Bildschirmbild speichern"] (http://wiki.lwjgl.org/wiki/Taking_Screen_Shots.html). – BDL

+0

oh danke, das war das Problem, das ich nicht benutzt habe (& 0xFF), um die Teile loszuwerden, die ich nicht brauche, danke – pocokknight1

Antwort

0

Wenn jemand das gleiche Problem haben, dass sie mir diese Zeile hinzufügen half:

int red = (pixels.get(0) & 0xFF); 

Es Teile loszuwerden brauche ich nicht und ich bekomme jetzt die genaue Farbe jedes Mal.

Verwandte Themen