2012-02-04 2 views
4

중 하나 {GL_SRC_COLOR, xxx} 등을 지정할 수있는 방법이 있나요 {xxx, GL_DST_COLOR} 그래서 소스 및 대상의 색상이 곱 것을 또한 GL_SRC_ALPHA는 결과가 {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA} = 0이라고하면 보장?OpenGL을 블렌딩 GL_SRC_COLOR/GL_DST_COLOR

나는 게임 세계에서 투명하게 시작하는 오버레이 사각형을 만들고 있지만 시간이 지나면 오버레이는 진한 파란색과 기본 색상의 조합이됩니다.

아래에서 다른 것들 중에서 {GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA}을 시도했습니다. 두 그림 모두에서 왼쪽은 오버레이가없는 주간이며, 오른쪽은 오버레이가있는 주간입니다.

밤 시간은 오버레이

1

날 시간이 0 알파에서 오른쪽에 전체 알파에서 오른쪽 오버레이 (SRC)에 있습니다. 2

문제

대상 색상 제로인 SRC 알파 두 배가된다는 것이다. 오버레이가없는 경우와 동일하게 유지하여 게임 중 투명도와 야간 전환을 조정할 수 있습니다. 이 작업을 수행하는 방법 또는 동일한 효과를 얻는 다른 방법이 있습니까?

답변

3

해결되었습니다. 실제로 알파를 사용하는 것보다 쉽습니다. 당신이 낮에있을 때 처음에, 당신은 전혀 색상 변경을 원하지 않는

{GL_DST_COLOR, GL_ZERO} 

을, 그래서 당신은 {255,255,255} (흰색)로 오버레이의 색상을 설정 : 나는 오버레이이를 사용했다. 알파는 사용되지 않으며 중요하지 않습니다. 그런 다음이 색상에 대상 색상 (세계 배경)을 곱합니다. 밤 시간이 다가 오면 오버레이 색상 만 조정하여 원하는 색상으로 세상을 색칠 할 수 있습니다. 진한 파란색을 원하면 다른 채널 (빨강 및 녹색)을 아래로 조정하여 대상 (세계 배경)에 파란색 채널을 상대적으로 많이 남겨 두어야합니다. 다음은 색상을 {120, 150, 200}으로 설정 한 결과입니다.

1