2009-10-15 1 views
6

iPhone에서 OpenGL ES 1.1을 10 개월 동안 사용해 본 적이 있는데 그 당시에는 할 수 없었던 간단한 작업이 하나 있습니다. 프로그래밍 방식으로 텍스처 처리 된 개체를 페이드 인합니다. 간단하게 유지하려면 : 코드 컨트롤에서 텍스처 (알파 포함)가 적용된 간단한 2D 삼각형을 어떻게 알파 페이드 (fade) 할 수 있습니까? 나는 그것이 단순한 색깔의 배경이 아니라 장면 위에있는 동안 그것을 in/out으로 퇴색시키고 싶다. 지금까지 내가해야 할 유일한 기술은 텍스쳐의 여러 가지 미리 퇴색 된 복사본으로 텍스처를 생성하는 것입니다. (Yuck)OpenGL ES 1.1 (iPhone)에서 텍스처가있는 오브젝트를 프로그래밍 방식으로 알파 페이드하는 방법

예를 들어 Apple의 GLSprite 샘플 코드를 사용하여 시작할 수 없습니다. 이미 고유 한 알파가있는 텍스처로 쿼드를 텍스처링합니다. 그 개체를 밖으로 퇴색하고 싶습니다.

답변

15

어쩌면 내가 너에게 맞지 않을지 모르지만 나에게는 사소한 것처럼 보이고 나는 그것을 내 앱에 성공적으로 적용 해왔다. 가는 방법은 다음과 같습니다 당신의 형상을 그려 glColor4f(r * a, g * a , b * a, a)

  • : glEnable(GL_BLEND)
  • 과 함께 혼합 할 수있는 색상을 설정 블렌드 모드 glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)
  • 를 선택

    1. 당신이
    2. 가 혼합 수 있도록 필요한 텍스처링 모든 것을 가능

    블렌드 기능은 미리 곱한 c를 사용하여 porter-duff over olors/textures. GL_TEXTURE_ENV_MODEGL_MODULATE으로 설정해야하지만 기본값입니다.

  • +0

    감사 애플 dev에 포럼에 대한 몇 가지 도움말을, 나는이 다른 변화를 사용하여 작업 덕분에있어! 또한, "GL \ _ONE"대신 "GL \ _SRC \ _ALPHA"를 사용하여 시도해도 사라지지 않을 것입니다. – PewterSoft

    +1

    그래서 내가 명시 적으로 * 미리 곱하기 * 색상을 지정했습니다. 이것은 Quartz 비트 맵 컨텍스트에서 색상이 처리되는 일반적인 방식이므로 GL에로드 된 텍스처에서도 마찬가지입니다. 색상이 비확산 된 경우 지정한 혼합 함수가 예상대로 작동합니다 (대상 알파는 제외). 일반적으로 관련이 없습니다. –

    2

    니콜라이의 해결책은 정확합니다. 제가 애플 포럼에서 말한 것을 무시하십시오. 텍스처가 미리 곱 해져 있기 때문에, 버텍스 당 색상도 있어야합니다. 당신은 GL_SRC_ALPHA보다는 GL_ONE를 사용하여이 작업을 수행해야합니다

     
    
                
     
      
                 glColor4f(1., 1., 1., myDesiredAlpha);
                
      
    glColor4f(myDesiredAlpha, myDesiredAlpha, myDesiredAlpha, myDesiredAlpha); 
    
    관련 문제