2010-06-23 7 views
0

# 20 자습서를 Nehe에서 읽고 마스킹에 대한 질문은 여기에서 b/w 이미지와 불투명 이미지를 사용하여 마스킹을 구현했지만 그 결과는 전혀 기대하지 않습니다 (OpenGL ES 1을 사용하고 있습니다. iPhone이므로 쉐이더를 사용할 수 없습니다.)
Source+Mask=Result
으로 마스크에 흰색 어떤 결과 사진에서 볼 수 투명하지 않고 무엇을 검정하는 소스 색상 만 흰색 여기 내가 그것을 렌더링하는 데 사용하는 소스 코드 아닌 (!) : OpenGL ES에서 마스킹

// we render from one big texture using coordinates 
    // so changing rectangle will change the drawn image 
    _pressedFrame = maskRect; 
    glBlendFunc(GL_DST_COLOR,GL_ZERO); 
    [super render:sender]; 

    _pressedFrame = normalRect; 
    glBlendFunc(GL_ONE,GL_ONE);  
    [super render:sender]; 

어떤 도움을 주셔서 감사합니다!

답변

2

NeHe 튜토리얼의 기술을 올바르게 사용하려면 소스 이미지의 배경 (즉, 마스크 이미지가 흰색 인 모든 곳)을 완전히 검정으로 처리해야합니다. 첫 이미지에서 소스가 무엇인지 정확히 알 수는 없지만 최종 이미지에서 밝아지는 곳에서는 검은 색이 아닌 것으로 생각됩니다.

그러나이 방법은 OpenGL ES 1.1에서는 필요하지 않습니다. 멀티 패스를 사용하여 단일 패스에서 알파 마스크를 사용하여 이미지를 렌더링 할 수 있습니다. 또한 마스크와 이미지가 항상 함께 그려지는 경우, 단일 텍스처를 RGBA 텍스처로 베이킹하는 것이 좋습니다. 다중 텍스처는 필요하지 않습니다.

+0

텍스처가 꽤 큽니다. 그래서 그것을 한 번로드하고 간단한 블렌딩을 사용하고 싶습니다. 그렇지만 가능하지 않으므로 멀티 텍스처링을 사용합니다. 감사합니다. –

관련 문제