comment faire pour convertir une valeur de couleur RVB pour une valeur hexadécimale en C++?
Dans mon application C++, j'ai une image png de la couleur en termes de Rouge, de Vert, de Bleu, de valeurs. Je l'ai stocké ces valeurs dans les trois entiers.
Comment convertir les valeurs RVB dans l'équivalent de la valeur hexadécimale?
Exemple, comme dans ce format 0x1906
EDIT: je vais enregistrer au format que GLuint.
Dans ce numéro,
Je ne suis pas sûr à ce sujet. Mais il doit être comme RVB séquence de! Ne sais pas si cela répond à votre question. Désolé!
Attendez, vous voulez les convertir vers un format, mais vous ne savez pas ce qu'est le format? Il n'y a qu'une seule façon de résoudre ce problème, et personne ne peut vraiment vous aider avec ça.
Le format doit être comme comme comme le format de GL_ALPHA. Qui est égal à 0x1906. Il est défini sur GLES.
Je comprends. J'ai expliqué mon problème en détendez-vous de la réponse en commentaire. Merci.
0x1906
, les bits représente les différentes couleurs?Je ne suis pas sûr à ce sujet. Mais il doit être comme RVB séquence de! Ne sais pas si cela répond à votre question. Désolé!
Attendez, vous voulez les convertir vers un format, mais vous ne savez pas ce qu'est le format? Il n'y a qu'une seule façon de résoudre ce problème, et personne ne peut vraiment vous aider avec ça.
Le format doit être comme comme comme le format de GL_ALPHA. Qui est égal à 0x1906. Il est défini sur GLES.
Je comprends. J'ai expliqué mon problème en détendez-vous de la réponse en commentaire. Merci.
OriginalL'auteur Tahlil | 2013-01-17
Vous devez vous connecter pour publier un commentaire.
Magasin approprié bits de chaque couleur dans un entier non signé d'au moins 24 bits (comme un
long
):Maintenant, au lieu de:
que vous pouvez faire:
Noter que le ci-dessus ne traitent pas avec le canal alpha. Si vous devez également encoder alpha (RGBA), alors vous avez besoin de cette place:
Remplacer
unsigned long
avecGLuint
si c'est ce que vous avez besoin.OriginalL'auteur Nikos C.
Si vous souhaitez créer une chaîne, vous pouvez probablement utiliser
snprintf()
:Cela va construire la chaîne
001906" in
hexcol", qui est la façon dont j'ai choisi d'interpréter votre exemple de la couleur (qui n'est qu'à quatre chiffres quand il devrait être de six).Vous sembler confus sur le fait que la
GL_ALPHA
symbole de préprocesseur est défini pour être0x1906
en OpenGL fichiers d'en-tête. Ce n'est pas une couleur, c'est un spécificateur de format utilisé avec OpenGL appels d'API qui traitent de pixels, donc ils savent ce format d'attendre.Si vous avez une image PNG dans la mémoire, le
GL_ALPHA
format correspondrait à seulement les valeurs alpha de l'image (si présent), le ci-dessus est quelque chose de totalement différent puisqu'il construit une chaîne. OpenGL n'aurez pas besoin d'une chaîne de caractères, il aura besoin d'une mémoire tampon contenant les données dans le format requis.Voir le
glTexImage2D()
page de manuel pour une discussion sur la façon dont cela fonctionne.OriginalL'auteur unwind