Domanda

Ho un rendering di scena aperto su un livello EAGLView e alcuni altri elementi (cerchi e simili) su un UIView (che è un fratello di EAGLView, posizionato sopra di esso). È possibile fondere i colori tra i due strati? Vorrei fare una certa differenza per ottenere un effetto di inversione sui colori da EAGLView.

Ho giocato con CGBlendMode ma sembra influenzare solo ciò che sto disegnando in quella vista corrente. Penso che questo abbia qualcosa a che fare con CGContext ma sono un po 'confuso sui dettagli, posso forzare UIView ed EAGLView ad avere lo stesso CGContext in modo che la fusione funzioni tra loro?

Aiuto, correzioni, chiarimenti sono tutti apprezzati. Grazie in anticipo, -S

È stato utile?

Soluzione

Risposta breve è impossibile. Segue una risposta lunga.

Con EAGLView devi indicare la sottoclasse di UIView inclusa nel modello OpenGL ES in Xcode. Ciò che rende speciale questa classe è che il metodo di classe layerClass viene sovrascritto e restituisce la classe CAEAGLLayer invece della classe CALayer , come impostazione predefinita.

UIView e CALayer funzionano in coppia. Tutti gli oggetti UIView sono supportati da un CALayer , il CALayer è l'oggetto responsabile del layout e del rendering sullo schermo. Il UIView è un delegato del CALayer ed è responsabile del disegno della grafica quando necessario.

CALayer consentirà al suo delegato (il UIView ) di disegnare in un CGContextRef . È un contesto per UIView , quindi non puoi usare CGBlendMode per fondere più viste poiché funzionerà solo all'interno di un singolo contesto UIView.

La fusione di CALayer deve essere eseguita utilizzando le proprietà del filtro. Questi sono definiti per il sistema operativo iPhone, ma i filtri disponibili sono indefiniti secondo la documentazione. Questo perché Core Image non è al momento disponibile su iPhone OS.

Altri suggerimenti

Non credo che sarai in grado di fondere i colori in quel senso. Il meglio che puoi fare è avere uno che oscuri completamente l'altro o avere lo strato superiore semitrasparente (nel qual caso vedrai la parte sottostante) - ma non sarai in grado di eseguire il disegno di tipo XOR.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top