Pregunta

Me gustaría convertir un color VGA (256 colores; 8 bits) a un color RGB en iOS.

¿Es posible calcular esto o tengo que usar tablas de color (usando cgcolorspacecreateIndexed)?

Uicolor no admite 256 colores.

Gracias :)

¿Fue útil?

Solución

En algún lugar, el título que está portando debería haber establecido la paleta. En el VGA, los 256 colores se mapean a través de una tabla que el programador ha configurado previamente para convertirlos en color RGB de 18 bits (con un uniforme de 6 bits por canal). Si está ejecutando el título original a través de la emulación, observe las escrituras en los puertos 0x3c6, 0x3c8 y 0x3c9 o llama al BIOS a través de int 10h, con ax = 0x1010 (para establecer un solo color) o 0x1012 (para establecer un rango). Si tiene el código original, obviamente busque la fuente de la tabla de la paleta.

En términos de dibujo, puede mantener la paleta usted mismo, por ejemplo, como una matriz de estilo C de 256 cgcolorRefs, o usar cgcolorspacecreateDexed como sugiere (ignore el ligero error de documentación de Apple; la tabla de colores puede contener hasta 256 entradas, no hasta 255 ) Probablemente con un contexto de mapa de bits para pasar su búfer a CoreGraphics y olvidarse de ello.

Espero que la reasignación se realice en la CPU, por lo que si eso se vuelve demasiado costoso, considere usar GL es 2.x y escribir un sombreador de píxeles adecuado: subiría su imagen real como, por ejemplo, una luminancia (es decir, Un solo canal) Textura, más una textura de 256x1 donde el color en cada lugar es una entrada de paleta, luego escriba un sombreador que lea desde la primera textura para las coordenadas de textura actuales y usa ese valor para indexar el segundo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top