glReadPixels() "Daten" - argument nutzen?
Ich versuche, glReadPixels zu bekommen Farbinformation aus einem Bild. Ich sollte mich mit glReadPixels aber ich kann nicht scheinen, um es herauszufinden. Es ist Teil eines viel größeren Projekt, aber jetzt alles was ich will ist zu wissen, wie Sie richtig zu nutzen.
Sah ich es und habe so etwas wie dieses:
void glReadPixels(GLint x,
GLint y,
GLsizei width,
GLsizei height,
GLenum format,
GLenum type,
GLvoid* data);
Aber ich bin mir nicht sicher, was sollte ich dabei sein, als das Letzte argument, und wenn ich es Tue, wie würde ich es sogar benutzen. Hilfe wäre wirklich dankbar! (sprich: ein einfaches Beispiel, wie es zu benutzen, oder wie man die Farbe)
Beispiel, wie Lesen Sie den gesamten Bildschirm auf einmal: stackoverflow.com/a/36236839/895245
InformationsquelleAutor Otter | 2012-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
data
einen Zeiger auf einige Puffer, die Sie vorbereitet für glReadPixels und speichert die Daten in. Wie diese:Was GL_PACK_ALIGNMENT? Oder GL_PACK_ROW_LENGTH?
GL_PACK_ALIGNMENT eingestellt werden sollte, aber der genaue Wert ist abhängig von der Ziel-format. GL_PACK_ROW_LENGTH werden kann, 0 Links, es sei denn, Sie aktualisieren möchten, eine subportion der Puffer auf Daten. Allerdings nur für das Lesen ein Bild im ganzen ist dies nicht notwendig.
Wie bekommen Sie die
format
für den Standard-Puffer?ist eine Konvertierung der parameter. Es fragt OpenGL zu konvertieren, wird der Inhalt des Puffers auf die spezifischen format, das Sie wünschen.
InformationsquelleAutor datenwolf
Beispiel:
Verwenden Sie die Maus, um die RGBA-Wert für ein pixel.
Ich bekomme Abstürze während des Vektor-Freigabe. Ich reparierte es mit:
unsigned char pixels[4];
Wechseln Sie zu FreeGLUT und/oder versuchen, zu kleben ein
glFinish()
vor derglReadPixels()
nennen.vielen Dank! es hat funktioniert!! Hinzugefügt habe ich die Funktion aufrufen und änderte meine Bibliotheken zu FREEGLUT
FREEGLUT es behoben. glFinish() ändert sich auch nichts in der Ausgabe.
InformationsquelleAutor genpfault
data
ist der pointer auf die Pixeldaten, die Sie versuchen zu Lesen. Werfen Sie einen Blick auf einige Beispiel-code, und suchen Sie ein paar Zeilen oben rufen, um herauszufinden, wie man Sie initialisieren. In der Regel wird es nur eine Zuordnung der Größe etwas wiex * y * depth
. Sie würde übergeben Sie es als&data
. Versuchen Sie, das Lesen eines 1x1-pixel-block von bekannten Farbe und sehen, welche Art von Informationen es gibt sich wieder.Ich nehme an, mein Wort Bestellung zu wünschen übrig: "Die pixel-Daten, die Sie versuchen, zu Lesen ist gespeichert in
data
". Sie sind Lesen die pixel indata
.InformationsquelleAutor Tim