Question

Je voudrais convertir une couleur VGA (256 couleurs, 8 bits). À une couleur RVB sur iOS

Est-il possible de calculer ceci ou dois-je utiliser des tables de couleurs (en utilisant CGColorSpaceCreateIndexed).

UIColor ne supporte pas les 256 couleurs.

Merci:)

Était-ce utile?

La solution

Quelque part, le titre que vous êtes le portage devrait avoir mis la palette. Sur le VGA, 256 couleurs sont mappées à travers une table que le programmeur a précédemment défini pour les convertir en 18 bits couleur RGB (à un uniforme de 6 bits par canal). Si vous utilisez le titre original par l'émulation puis regarder vers les ports pour les écritures 0x3c6, 0x3c8 et 0x3c9 ou les appels vers le BIOS via int 10H, avec la hache = 0x1010 (pour régler une seule couleur) ou 0x1012 (pour définir une plage). Si vous avez le code d'origine, regardez bien évidemment la source de la table de la palette.

En ce qui concerne le dessin, vous pouvez garder la palette vous-même, par exemple comme un tableau de type C de 256 CGColorRefs, ou l'utilisation CGColorSpaceCreateIndexed comme vous le suggérez (ignorer légère erreur de documentation d'Apple, la table des couleurs peut contenir jusqu'à 256 entrées, non jusqu'à 255) probablement dans un contexte de bitmap pour juste passer votre tampon hors de CoreGraphics et de l'oublier.

Je pense que le remappage sera effectué sur le CPU, donc si cela devient un peu trop coûteux alors envisager d'utiliser GL ES 2.x et l'écriture d'un pixel shader approprié - vous souhaitez télécharger l'image réelle, par exemple, une luminance (c.-à canal unique) texture, ainsi qu'une texture 256x1 où la couleur au niveau de chaque spot est une entrée de palette, puis d'écrire un shader qui lit à partir de la première texture pour les coordonnées de texture courant et utilise cette valeur pour indexer la seconde.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top