2011-01-29 7 views
1

iOS의 VGA 색 (256 색, 8 비트)을 RGB 색으로 변환하고 싶습니다.iOS 256 색 (VGA) to RGB

이것을 계산할 수 있습니까? 아니면 CGColorSpaceCreateIndexed를 사용하여 색상 표를 사용해야합니까?

UIColor는 256 색을 지원하지 않습니다.

감사합니다 :)

+0

"256 비트"를 "256 색"으로 변경하는 자유를 얻었습니다. –

+1

질문에 의미가 없습니다. 8 비트 색상 공간 *의 VGA 색상은 * RGB 색상입니다. 그들은 각각의 적색, 녹색 및 청색 성분으로 구성된다. 최대 256 색이 있다는 사실은 부적합합니다. 어떤 종류의 색상 인덱스 테이블을 만들거나 아무 것도 계산할 필요가 없습니다. –

+0

아마 내가 정교해야합니다. 나는 iOS에 DOS 게임의 항구에서 일하고있다. uint8을 색상 (하나의 구성 요소, 8 비트)으로 가져오고이를 RGB (세 구성 요소)로 변환해야합니다. – RhodanV5500

답변

1

어딘가에, 당신은 포팅하고있는 제목이 팔레트를 설정해야합니다. VGA에서 256 색은 프로그래머가 이전에 18 비트 RGB 색상으로 변환하도록 설정 한 테이블을 통해 매핑됩니다 (채널 당 균일 한 6 비트). 에뮬레이션을 통해 원래 제목을 실행하는 경우 포트 0x3c6, 0x3c8 및 0x3c9에 대한 쓰기 또는 ax = 0x1010 (단색 설정) 또는 0x1012 (범위 설정)를 사용하여 int 10h를 통해 BIOS에 대한 호출을 감시하십시오. 원래 코드를 가지고 있다면 분명 팔레트 테이블의 소스를 찾으십시오.

드로잉 측면에서 256 개의 CGColorRefs의 C 스타일 배열처럼 팔레트를 직접 보관하거나 제안 된대로 CGColorSpaceCreateIndexed를 사용할 수 있습니다 (Apple의 약간의 설명서 오류는 무시하십시오. 색상 표에는 최대 256 개의 항목이 포함될 수 있으며, 최대 255 개까지) 비트 맵 컨텍스트를 사용하여 버퍼를 CoreGraphics로 전달하고 잊어 버릴 수 있습니다.

CPU에서 리매핑이 수행되기를 기대합니다. 따라서 너무 비싸면 GL ES 2.x를 사용하고 적절한 픽셀 쉐이더를 작성하는 것이 좋습니다. 예를 들어 실제 이미지를 휘도 (즉, 단일 채널) 텍스처와 각 스폿의 색상이 팔레트 항목 인 256x1 텍스처를 선택한 다음 현재 텍스처 좌표의 첫 번째 텍스처에서 읽은 두 번째를 인덱싱하기 위해 해당 값을 사용하는 셰이더를 작성합니다.