Wenn Sie eine Zeichenfolge aufbauen wollen, können Sie wahrscheinlich snprintf()
verwenden:
const unsigned red = 0, green = 0x19, blue = 0x06;
char hexcol[16];
snprintf(hexcol, sizeof hexcol, "%02x%02x%02x", red, green, blue);
Dies wird die Zeichenfolge 001906" in
hexcol` bauen, das ist, wie ich wählte Ihr Beispiel Farbe zu interpretieren (die nur vier Ziffern wenn es sechs sein sollte).
Sie scheinen verwirrt über die Tatsache zu sein, dass das GL_ALPHA
Präprozessorsymbol in OpenGL-Headerdateien als 0x1906
definiert ist. Dies ist keine Farbe, es ist ein Format-Spezifizierer mit OpenGL API-Aufrufe, die mit Pixeln umgehen, so dass sie wissen, welches Format zu erwarten ist.
Wenn Sie ein PNG-Bild im Speicher haben, würde das GL_ALPHA
Format entspricht nur die Alpha-Werte im Bild (falls vorhanden), die oben ist etwas ganz anderes, da es eine Reihe aufbaut. OpenGL benötigt keine Zeichenkette, es benötigt einen In-Memory-Puffer, der die Daten im erforderlichen Format enthält.
Eine Anleitung dazu finden Sie in der Handbuch-Seite glTexImage2D()
.
In dieser Nummer, '0x1906', welche Bits repräsentiert die verschiedenen Farben? –
Ich bin mir nicht sicher. Aber es sollte wie RGB-Sequenz sein! Weiß nicht, ob es deine Frage beantwortet. Es tut uns leid! – Tahlil
Warten Sie, Sie möchten in ein anderes Format konvertieren, wissen aber nicht, welches Format das ist? Es gibt nur eine Möglichkeit, dieses Problem zu lösen, und niemand kann Ihnen dabei wirklich helfen. –