LWJGL과 함께 Java를 사용하여 게임을위한 Lights/Shadows 시스템을 작성했습니다.OpengGL Light Blending
내가 이러한 질감 (0, 0, 1) 또는 (1, 0, 0 가득 있음을 경고한다 : 발광 엔티티의 각각에 대해 나는 그런 질감을 생성) 픽셀을 사용하고 알파 채널을 사용하여 그라디언트 효과를 얻습니다. 알파 채널을 그라디언트 요소로 해석합니다.
그런 다음 각각의 라이트/섀도우 텍스처를 하나의 텍스처에 혼합하여 각 텍스처가 올바른 위치에 놓 이길 원합니다. 이를 위해 Framebuffer를 사용합니다. 단지 최대 (사, 다),로 진술 할 것입니다 내가 GL_MAX를 들어, 임의로 알파 채널 혼합 기능에 대한 GL_ONE/GL_ONE을 선택
glBlendEquationSeparateEXT(GL_FUNC_ADD, GL_MAX);
glBlendFuncSeparateEXT(GL_SRC_ALPHA, GL_DST_ALPHA, GL_ONE, GL_ONE);
: 나는 다음과 같은 혼합 식/기능의 조합을 사용하여 원하는 효과를 달성하기 위해 노력 here, 즉 배율 인수가 사용되지 않음을 의미합니다. 이 조합의 결과는 다음과 같습니다. 이 이미지는 Apple의 OpenGL 드라이버 프로파일 러에서 얻은 것입니다. 따라서이 이미지는 내 응용 프로그램을 사용하여 렌더링하지 않았습니다 (최종 결과가 엉망이 될 수 있음). 다음 단계는 이미지를 어둡게하기 위해 곱셈 블렌딩을 사용하여 실제 텍스처 위에이 텍스처를 렌더링하는 것입니다.하지만 조명/그림자 텍스처는 분명히 잘못되었습니다. 서로 빛/그림자 텍스처의 가장자리를 볼 수 있기 때문에 분명히 잘못되었습니다. .
원하는 결과를 얻으려면 어떻게해야합니까?
편집 : 스케일링 요인에 대한 내 선택을 설명하는 것을 잊었다 : 단순히 각각의 빛의 색상을 추가하는 것이 옳을 것 생각 이 (각각의 알파 값으로 그들 각각을 숙고) 및 최종 조각의 알파를 각 중첩하는 빛 중에서 가장 큰 것으로 선택하십시오.