, muhtemelen snprintf()
kullanabilirsiniz:
const unsigned red = 0, green = 0x19, blue = 0x06;
char hexcol[16];
snprintf(hexcol, sizeof hexcol, "%02x%02x%02x", red, green, blue);
Bu sadece dört basamaktır senin örneğin rengini (yorumlamak seçti nasıl dize 001906" in
hexcol`, inşa edecek Altı olması gerektiğinde).
GL_ALPHA
önişlemci sembolünün OpenGL'nin üstbilgi dosyalarında 0x1906
olarak tanımlanmış olması gerçeğiyle karıştırılmış görünüyorsunuz. Bu bir renk değil, piksellerle ilgilenen OpenGL API çağrılarıyla kullanılan biçim belirteci, dolayısıyla hangi biçimin beklendiğini biliyorlar. Eğer bellekte bir PNG resim varsa
, GL_ALPHA
biçimi, yukarıda bir dize oluşturur çünkü tamamen farklı bir şeydir (varsa) görüntüdeki sadece alfa değerleri karşılık olur. OpenGL bir dizeye gerek duymaz, verileri gereken biçimde tutan bir bellek içi arabelleğe ihtiyaç duyar.
Bunun nasıl çalıştığıyla ilgili bir tartışma için glTexImage2D()
elkitabı sayfasına bakın.
Bu sayı, '0x1906', hangi bitler farklı renkleri temsil eder? –
Bundan emin değilim. Ama RGB dizisi gibi olmalı! Sorunuzu cevaplarsa bilmiyorum. Afedersiniz! – Tahlil
Bekleyin, bazı biçimlere dönüştürmek istiyorsunuz, ancak bu biçimin ne olduğunu bilmiyorsunuz? Bu sorunu çözmenin tek bir yolu var ve hiç kimse size bu konuda yardımcı olamaz. –