2012-06-16 6 views
2

glColor4f(0f, 0f, 0f, 0f);과 같은 방법을 사용하면 값을 설정하는 모든 값을 설정합니다. 그러나 색상을 약간 변경하면됩니다. 기존 색상에 매개 변수를 추가하거나 뺄 기존 OpenGL 메서드가 있습니까?기존 색상을 변경하는 방법 OpenGL

내가 할 수있는 다른 방법은 먼저 색상 값을 얻은 다음 원하는대로 편집하고 마지막으로 glColor4f()으로 다시 보내야합니다.

그래서 닫으면 기존 RGBA를 편집하거나 기존 RGBA를 검색하는 방법이 있는지 알고 싶습니다.

답변

2

음, 에 GL_CURRENT_COLOR을 사용하여 glColor4f으로 마지막 값을 설정할 수는 있지만 권장하지는 않습니다. glGet 작업은 일반적으로 성능에 좋지 않으므로 자주 수행하지 마십시오.

가장 좋은 방법은 전송 한 마지막 값의 로컬 복사본을 glColor4f으로 유지하는 것입니다. 그러면 데이터를 OpenGL 드라이버에서 요청하지 않고 클라이언트 측에 보관할 수 있습니다.

내가 알고있는 현재 색상을 더하거나 뺄 수있는 방법이 없습니다.

편집 : 실제로 나는이 기능을보고 원하는 기능을 수행 할 수있는 glSecondaryColor이라고합니다. 두 번째 RBG 색상을 제공 한 다음 GL_COLOR_SUM을 활성화하면 두 색상이 함께 추가됩니다.

+0

이것은 완벽하지만'glSecondaryColor3d (0, -15/255d, 0)'와 같이 빼기에 대한 음의 매개 변수에서는 작동하지 않습니다. 그러나 나는 그걸 가지고 놀았고'glSecondaryColor3d (15/255d, 0,15/255d)'를 실행하여 같은 효과를 얻을 수 있다고 확신한다. 그럼에도 불구하고 이것은 정확하게 내가 검색 한 내용이므로 감사합니다. – GlassZee

+0

정말요? 맨 페이지에 따르면 네거티브 컬러를 제공 할 수 있어야합니다. http://www.opengl.org/sdk/docs/man/xhtml/glSecondaryColor.xml @GlassZee – Tim

+0

네가 네거티브를 입력하면 그 차이가 나타나지 않습니다. 정말 부끄러운 줄 알아. 하지만 R, G, B로 시작해서 비트를 조금 높인 다음 G를 0으로 천천히 낮추어 문제의 더 나은 해결책을 찾았습니다. 문자 그대로 "같은 차이"입니다. 원래 질감을 추가 한 양만큼 어둡게 만듭니다. – GlassZee

관련 문제