2009-08-18 2 views
0

불규칙한 모양의 오브젝트 텍스처가 있고 다른 텍스처 (모든 종류의 컬러 이미지)의 드로잉을 첫 번째 텍스처의 오브젝트 모양으로 만 제한하려면 OpenGL에서 어떻게이 효과를 얻을 수 있습니까? ES 1.1? 첫 번째 텍스처의 모양이 마치 클리핑 영역처럼 작동합니다.OpenGL ES 1.1에서 불규칙한 모양 클리핑을 만드는 방법은 무엇입니까?

저는 첫 텍스처를 그리기 위해 프레임 버퍼를 사용하여 이것을 얻으려고 노력했습니다. 그리고 OpenGL 논리 연산을 사용하여 불투명 한 픽셀에만 드로잉을 제한하고 그 다음 텍스처를 다음 프레임 버퍼로 렌더링하려고했습니다. 결과를 얻으십시오. 그러나 성공하지 못했습니다.

누구에게이 작업을 수행 했습니까?

+0

충분히 명확하지 않으면 실례합니다. 기본적으로 달성 할 수없는 것은 실제로 여러 텍스처링 단위 또는 셰이더를 사용하지 않고 프레임 버퍼 개체를 사용하는 OpenGL 마스킹입니다. –

+0

해결책을 찾았습니까? 지금 당장하고 싶어. –

+0

아직 해결 방법이 없습니다. –

답변

0

로직 연산을 사용하는 경우 텍스처로 렌더링 할 필요가 없습니다. 스텐실 링 (stenciling)을 사용하기 만하면됩니다. 즉, 첫 번째 모양을 스텐실 버퍼 (only)로 그린 다음 스텐실 테스트를 사용하여 마스크 된 픽셀을 제거합니다.

는 (이 튜토리얼은 바탕 화면 창 GL입니다,하지만 난 스텐실 논리는 다음 생각합니다.) 당신이 텍스쳐를 사용하려면

http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=26

, 나는 알파 채널로 첫 번째 모양을 렌더링 제안 OES_framebuffer하거나 glCopyTexImage2D가를 사용하여 두 텍스처의 (.

그런 다음 마스크 텍스처에 의해 실제 질감이나 색상의 알파 채널을 곱 '결합'으로 glTexEnv를 사용합니다. 이것은 효과적으로 "잘라"됩니다 대부분의 사용자 픽셀 (깊이 t 사용 마스크 된 픽셀을 Z 버퍼에 쓰지 않으려면 est를 사용하십시오.)

텍스처 중심 접근 방식은 복잡합니다. 조합 된 모델 뷰와 프로젝션 매트릭스를 사용하여 화면 공간에서 텍스처 좌표를 생성해야합니다. 텍스쳐 행렬로서 사용하고, 정점을 glTexCoordPointer에 넘깁니다. 이것은 1.1 하드웨어에 대한 "가난한 사람의 glTexGen"의 일종입니다.

두 가지 방법 중 가능한 경우 스텐 슬링을 제안합니다. 스텐실 버퍼의 가용성은 특정 윈도우 관리자에 따라 달라질 수 있습니다.

+0

좋은 답변입니다! 고맙습니다! –

0

multitexture를 사용하고 다른 텍스처 (alpha)로 하나의 텍스처를 변조하거나 스텐실 버퍼로 렌더링 한 다음이를 테스트하십시오. 후자의 경우 알파와 알파 테스트를 사용해야합니다. 두 경우 모두 텍스처가 텍스처 유닛의 알파 출력으로 모양을 가져야하므로 멀티 텍스처 변조가 가장 빠른 옵션이라고 생각합니다.