Jeśli chcesz zbudować ciąg, prawdopodobnie można użyć snprintf()
:
const unsigned red = 0, green = 0x19, blue = 0x06;
char hexcol[16];
snprintf(hexcol, sizeof hexcol, "%02x%02x%02x", red, green, blue);
To zbuduje ciąg 001906" in
hexcol`, czyli jak wybrałem interpretować swój przykładowy kolor (który jest tylko cztery cyfry kiedy powinno być sześć).
Wygląda na to, że nie rozumiesz, że symbol preprocesora GL_ALPHA
jest zdefiniowany jako 0x1906
w plikach nagłówkowych OpenGL. To nie jest kolor, jest to specyfikator formatu w formacie używany z wywołaniami OpenGL API, które dotyczą pikseli, dzięki czemu wiedzą, jakiego formatu oczekiwać.
Jeśli masz obrazu PNG w pamięci, należy sformatować GL_ALPHA
odpowiadałaby tylko wartości alfa w obrazie (jeśli występuje), powyższe jest coś zupełnie innego, ponieważ buduje ciąg. OpenGL nie będzie potrzebował łańcucha, będzie potrzebował bufora w pamięci przechowującego dane w wymaganym formacie.
Zobacz stronę podręcznika glTexImage2D()
, aby dowiedzieć się, jak to działa.
W tym numerze "0x1906", które bity reprezentują różne kolory? –
Nie jestem tego pewien. Ale powinno to być jak sekwencja RGB! Nie wiem, czy odpowiada na twoje pytanie. Przepraszam! – Tahlil
Czekaj, chcesz przekonwertować na jakiś format, ale nie wiesz, jaki to format? Jest tylko jeden sposób na rozwiązanie tego problemu i nikt nie może ci w tym pomóc. –