2011-01-29 4 views
1

iOS上でVGAカラー(256色、8ビット)をRGBカラーに変換したいと思います。iOS 256色(VGA)からRGB

これを計算することは可能ですか、またはCGColorSpaceCreateIndexedを使用してカラーテーブルを使用する必要がありますか。

UIColorは256色をサポートしていません。

感謝:)

+0

私は "256ビット"を "256色"に変更する自由を取った。 –

+1

質問は意味をなさない。 8ビットカラースペース*のVGAカラーは* RGBカラーです。それらは、個々の赤、緑、青の色成分で構成されています。最大256色があるという事実は無関係です。どのような種類のカラーインデックステーブルを作成したり、何かを計算する必要はありません。 –

+0

多分私は詳しく述べるべきです。私はiOS向けのDOSゲームのポートに取り組んでいます。私は色(1つのコンポーネント、8ビット)としてuint8を取得し、RGB(3つのコンポーネント)に変換する必要があります。 – RhodanV5500

答えて

1

どこかは、あなたが移植しているタイトルは、パレットを設定しておく必要があります。 VGAでは、256色は、プログラマが18ビットRGB色に変換するように以前に設定したテーブルを介してマッピングされます(チャネルごとに6ビットで均一)。元のタイトルをエミュレーションで実行している場合は、ポート0x3c6、0x3c8、0x3c9への書き込み、またはax = 0x1010(単色の設定)または0x1012(範囲の設定)を使用してint 10h経由でBIOSを呼び出します。元のコードをお持ちの場合は、明らかにパレットテーブルのソースを探してください。

図では、256字のCGColorRefのCスタイルの配列など、パレットを自分で保管することも、CGColorSpaceCreateIndexedを使用することもできます(Appleのわずかなドキュメントのエラーは無視してください) CoreGraphicsにバッファを渡して忘れてしまったビットマップコンテキストがあるかもしれません。

私はCPU上で再マッピングが実行されると予想していますので、少しコストがかかる場合はGL ES 2.xの使用と適切なピクセルシェーダーの作成を検討してください。各スポットの色がパレットエントリである256x1テクスチャに加えて、現在のテクスチャ座標の最初のテクスチャから読み込んだシェーダを書き出し、その値を使用して2番目のインデックスを作成します。

関連する問題