2010-05-12 3 views
4

저는 OpenGL을 가진 완전한 초보자입니다. 시작하기 전에 내가하고 싶은 것이 가능한지 알아보기 위해 노력하고 있습니다. OpenGL을 사용하여 구성 요소 당 하나의 알파 채널 (빨강, 녹색 및 파랑 중 하나)과 블렌딩을 수행 할 수 있는지 알고 싶습니다. 그렇지 않은 경우 가능한 해결 방법은 무엇입니까?OpenGL이 포함 된 구성 요소 알파 채널?

감사합니다.

답변

2

직접 지원되는 것은 아닙니다.

  • 하면 3 채널 "알파"질감과 glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR)
  • 당신의 RGB를 조절하는 "알파"질감을 멀티 텍스쳐를 사용하도록 설정하고 설정을 사용하여 삼각형을 렌더링 (또는 무엇이든) : 그래도 자신에 달성하기 매우 쉽다 질감
  • 은 당신이 설명하는 것은 OpenGL을 불가능 glBlendFunc(GL_ONE, GL_ONE)
+0

윙윙 거리다, 어떤 오버 드로와도 작동하지 않는다고 생각합니까? 멀티 패스 알고리즘의 일반적인 문제입니다 ... – Bahbar

+0

@Bahbar 보통의 알파 블렌드는 오버 드로도 작동하지 않습니다. 올바른 결과를 얻으려면 조각을 깊이 정렬해야합니다. –

+0

맞다. 싱글 패스로 정렬해야한다. 그러나 동일한 정렬 세분성으로 다중 패스를 수행하면 솔루션이 여전히 작동합니다. 나는 처음에는 그것을 깨닫지 못했습니다. – Bahbar

0

으로 삼각형을 렌더링합니다.

그렇다면 OpenGL을 처음 접하는 사람이라면 설명하는 내용이 자신이 뭘하고있는 것인지 정확히 알 수 없을 것입니다.

블렌딩은 현재 조각 (일반적으로 삼각형에서 오는)의 색을 결정하면 일어나는 단계입니다. 그 색상은 프레임 버퍼의 이전 색상과 병합되어야합니다. 그게 니가 쫓고있는거야?

+2

현실 세계에서 대부분의 물체는 풀 컬러 스펙트럼 (스테인드 글라스 창 고려)과 동일한 투명성을 갖지 않습니다. –

+0

@ Andreas Brinck : 예, 있습니다. 그러나 OP는 그가 완전히 OpenGL을 처음 접했음을 분명히 밝혔습니다. 어쩌면 블렌딩의 의미를 정확히 알지 못했을 것입니다 (전에 여러 번 조각 색상 계산과 혼동하는 것을 보았습니다). – Bahbar

1

픽셀 쉐이더로이 작업을 수행 할 수 있지만 구성 요소 알파 값을 저장/액세스하는 방법을 찾아야합니다. 텍스처에 텍스처를 저장하고 일반 색상 구성 요소를 해당 색상의 알파 값으로 처리 할 수 ​​있습니다.

달성하려는 효과/결과는 무엇입니까?