문제

나는 EagglView 레이어에 OpenGL 장면 렌더링과 다른 요소 (원과 그와 같은) 렌더링을 가지고 있습니다. 두 레이어 사이의 색상을 혼합 할 수 있습니까? EagglView의 색상에 반전 효과를 얻기 위해 약간의 차이가 혼합되고 싶습니다.

나는 cgblendmode와 함께 놀았지만 현재의 관점에서 내가 그리는 것에 영향을 미치는 것 같습니다. 나는 이것이 cgcontext와 관련이 있다고 생각하지만 세부 사항에 약간 흐릿하다고 생각합니다. uiview와 eglview가 동일한 cgcontext를 갖도록 강제로 블렌딩이 그들 사이에 작동하도록 강요 할 수 있습니까?

도움, 수정, 설명이 모두 높이 평가됩니다. 미리 감사드립니다

도움이 되었습니까?

해결책

짧은 대답은 당신이 할 수 없다는 것입니다. 긴 대답이 따릅니다.

에 의해 EAGLView 당신은의 서브 클래스를 의미해야합니다 UIView 여기에는 Xcode의 OpenGL ES 템플릿에 포함됩니다. 이 클래스를 특별하게 만드는 것은 layerClass 클래스 메소드가 재정의되어 반환됩니다 CAEAGLLayer 대신 클래스 CALayer 기본적으로 클래스.

UIView 그리고 CALayer 쌍으로 일하십시오. 모두 UIView 객체는 a CALayer,, CALayer 레이아웃 및 화면 렌더링을 담당하는 객체입니다. 그만큼 UIView 대의원입니다 CALayer, 필요할 때 그래픽을 그릴 책임이 있습니다.

CALayer 대의원이 될 것입니다 ( UIView) a로 그리십시오 CGContextRef. 그것은 하나의 컨텍스트입니다 UIView, 당신은 사용할 수 없습니다 CGBlendMode 하나의 단일 UIView 컨텍스트 내에서만 작동하므로 여러 뷰를 혼합합니다.

혼합 CALayer 필터 속성을 사용하여 수행해야합니다. iPhone OS 용으로 정의되지만 사용 가능한 필터는 한정되지 않은 문서에 따르면. 현재 iPhone OS에서 핵심 이미지를 사용할 수 없기 때문입니다.

다른 팁

나는 당신이 그런 의미에서 색상을 혼합 할 수 있다고 생각하지 않습니다. 당신이 할 수있는 최선은 하나를 완전히 모호하게하는 것입니다. 또는 상단 레이어 반 트랜스 펜트를 갖는 것입니다 (즉, 아래에 부품이 표시됩니다). 그러나 XOR 유형 도면을 수행 할 수는 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top