2010-03-17 3 views
0

나는 (내 자신의 그래픽 라이브러리에서) '드로잉 모드'를 구현하고 싶습니다.그래픽 라이브러리에서 구현하는 "드로잉 모드"는 무엇입니까?

하는 그러나 제가 0 1.0 사이 수레를 사용하여 각 채널의 색상을 저장하고 등 드로잉 AND, OR 것을 본인은 사용하기 전에 제 0-255 각 색상 채널 변환이 수행 AND, OR , 등 그리기 모드? float (0.0-1.0)로 다시 변환 하시겠습니까?

아니면 다른 방법이 있습니까?

감사합니다.

답변

2

나는 그 질문이 충분히 명확하지 않다고 믿습니다. AND, OR 등은 부울 연산자입니다. 많은 언어가 비트 버전을 지원합니다. 따라서 두 색상 값을 AND 또는 OR하는 의미가 정확히 무엇인지 정의해야합니다. Red AND Green이란 무엇입니까? 그것은 검은 색입니까?

위의 질문에 대한 답이 양수이면,이 연산자를 색상의 (정수) RGB 표현에 대한 비트 단위로 적용하고 싶을 것입니다. 이 경우에는 다음을 수행해야합니다.1. 부동 소수점을 (8 비트 또는 다른 해상도) 정수로 변환합니다. 2. 3 개 채널 (또는 알파가있는 4 개)을 하나의 단어 (아마도 32 비트 정수)로 묶습니다. 3 비트 연산자 적용 4. 채널의 압축을 풀고 다시 float으로 변환합니다.

float를 int로 변환 할 때는 먼저 float 값에 MAX_COLOR (예제에서는 255)를 곱한 다음 캐스팅해야합니다. 그렇지 않으면 모든 채널이 0이됩니다. 다시 float로 변환 할 때 반대쪽으로 먼저 캐스트 한 다음 MAX_COLOR로 나눠 값을 표준화합니다.

관련 문제