2013-01-09 5 views
0

저는 OpenGL을 연습하면서 8 비트 스타일의 게임 캐릭터 (젤다 링크)를 그리려고합니다. 나는 오른쪽 얼굴의 큰 정사각형 인 그의 얼굴로 시작했고, 그의 얼굴의 시작 오른쪽에 두 개의 블록 인 그의 눈을 그려 봤다. (6 블록, 가장 왼쪽의 2 개는 눈이다.)C++ OpenGL - 색상

눈 위쪽 (녹색 블록 위의 블록)은 진한 녹색 (코드 참조)이어야하지만 첫 번째 큰 블록 (얼굴)의 색상을 계속 사용합니다. 그것의 색상을 변경 유지하는 8-Bit Char

내가 잘못하고 있어요 무엇 :

나는 이이 사진을 참조하시기 바랍니다 ...이 말이 희망?

RGB 색상을 허용하기 위해 더 많은 작업을해야한다고 가정합니다. glColor3f(29, 137, 59); ...

+4

텍스처가 사용하기가 더 쉬울 것입니다. – luiscubal

+1

즉시 모드 (glBegin, glEnd)를 사용하지 마십시오. 버텍스 배열을 사용하십시오. 그들은 거의 20 년 동안 주변에 있었다. 그러나 GL_NEAREST 필터링 모드의 텍스처는 작업하기가 훨씬 쉽습니다. – datenwolf

답변

9

glColor3f은 부동 소수점 인수를 허용합니다. 이렇게하면 큰 숫자가 부동 소수점에 캐스팅되므로 29.0f, 137.0f 및 59.0f가됩니다. 주어진 색상은 0-1의 범위로 표현되며, 0-1 범위로 고정되고 물론 흰색 (1.0, 1.0, 1.0)으로 나타납니다.

대신 glColor3ub을 사용하십시오. 부호없는 바이트를 0-255 범위의 인수로 받아들입니다.이 값은 아마도 가장 익숙한 것입니다. glColor3i, glColor3s, glColor3ui, glColor3us 등 정수 및 단락 범위에 대해 정의 된 정수 및 단락 (및 부호없는 변형)을 허용하는 다른 형태가 있습니다. 이들은 단순히 내부적으로 소수 변형으로 변환됩니다 (예 : decimal = int/INT_MAX).

+0

우수. 문제 해결 :) 감사. – binary101