2014-01-17 2 views
0

Java OpenGL 프로젝트의 경우 Rubik 's Cube를 만들려고합니다. 나는 모든 회전을 계산하고 작동하지만, 어떻게 해야할지 모르는 한 가지가 있습니다. 즉, 큐브의 각면에 색상을 지정하십시오. glRotatef와 glTranslatef를 사용하여 각각 27 개의 블록을 배치하고 glutSolidCube를 사용하여 각 블록을 그립니다. glutSolidCube의 각면에 다른 색상을 어떻게 줄 수 있습니까? 텍스처 된 큐브를 보았습니다. 그러나 각 블록의 (x, y, z) 좌표를 모르기 때문에 힘들어 보입니다. 변형 행렬 (회전 및 평행 이동) 만 있습니다. 가장 쉬운 방법은 무엇입니까?Java OpenGL - glutSolidCube의 각면에 다른 색상 적용

답변

1

이것은 직접 가능하지 않을 수도 있습니다. glutSolidCube은 색 속성을 생성하지 않습니다 (fghCube 기능, freeglut source code 참조).

가장 간단한 방법은 직접 큐브의 형상을 생성하는 것입니다. 예상 위치, 법선 및 정점 당 추가 색상 속성이있는 총 6 개 (면) * 4 = 24 개의 정점을 생성합니다. 일반 특성과 마찬가지로 큐브의 8 가지 별점에 대해 3 가지 색상이 있어야합니다 (같은 꼭지점을 3 개의면이 공유하지만 각면마다 다른 색상이 필요하기 때문에).

또 다른 방법은 glutSolidCube을 사용하는 것이 정점 쉐이더의 정점 법선을 기반으로 정점 색상을 지정하는 것입니다. 하지만 아마도 버텍스 쉐이더를 사용하지 않을 수도 있습니다 ...