Pergunta

I têm um render opengl sobre uma camada EAGLView e alguns outros elementos (círculos e tais) render em um UIView (que é um irmão do EAGLView, posicionado acima dele). É possível misturar cores entre as duas camadas? Eu gostaria de fazer alguma mistura diferença para obter um efeito de inversão nas cores de EAGLView.

Eu fui brincar com CGBlendMode mas só parece afetar o que eu estou desenhando em que a visão atual. Eu acho que isso tem algo a ver com o CGContext mas eu sou um pouco vago sobre os detalhes, eu posso forçar o UIView eo EAGLView ter o mesmo CGContext para que a mistura funciona entre eles?

Ajuda, correções, esclarecimentos são apreciados. Desde já, obrigado, -S

Foi útil?

Solução

A resposta curta é que você não pode. resposta longa segue.

Por EAGLView você deve significar a subclasse de UIView que está incluído no modelo ES OpenGL no Xcode. O que torna esta classe especial é que o método de classe layerClass é substituído e voltar a classe CAEAGLLayer em vez da classe CALayer, como é padrão.

UIView e trabalho CALayer em pares. Todos os objetos UIView são apoiados por uma CALayer, o CALayer é o objeto responsável pelo layout e renderização para a tela. O UIView é um delegado à CALayer, e é responsável por desenhar seus gráficos quando necessário.

CALayer vai deixá-lo do delegado (a UIView) desenhar em um CGContextRef. É um contexto per UIView, então você não pode usar CGBlendMode para misturar vários pontos de vista, uma vez que só funcionará dentro de um contexto de UIView único.

Blending de CALayer deve ser feito usando as propriedades do filtro. Estes são definidos para o iPhone OS, mas os filtros disponíveis são indefinido de acordo com a documentação. Isso ocorre porque Núcleo Imagem não está disponível no iPhone OS neste momento.

Outras dicas

Eu não acho que você vai ser capaz de misturar cores nesse sentido. O melhor que você pode fazer é ter um obscurecendo completamente a outra, ou ter a camada superior semi-transparente (neste caso, você verá o debaixo parte) - mas você não será capaz de fazer o desenho tipo XOR

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top