Frage

Ich habe eine OpenGL Szene auf einer EAGLView Schicht und einigen anderen Elementen (Kreise und dergleichen) Rendern auf einem UIView Rendering (die ein Geschwister des EAGLView ist, darüber positioniert). Ist es möglich, Farben zwischen den beiden Schichten zu mischen? Ich möchte einen Unterschied machen Mischen eines Inversionseffekt auf die Farben von EAGLView zu bekommen.

Ich habe mit CGBlendMode herumgespielt, aber es scheint nur zu beeinflussen, was ich in dieser aktuellen Ansicht bin Zeichnung. Ich denke, das etwas mit dem CGContext zu tun hat, aber ich bin ein wenig verschwommen auf den Details, kann ich die UIView zwingen und die EAGLView die gleiche CGContext zu haben, so dass die Mischung funktioniert zwischen ihnen?

Hilfe, Korrekturen, Klärungen sind alle sehr geschätzt. Danke im Voraus, ES

War es hilfreich?

Lösung

Kurze Antwort ist, können Sie nicht. Lange Antwort folgt.

Mit dem EAGLView müssen Sie die Unterklasse von UIView bedeuten, die in der OpenGL ES-Vorlage in Xcode enthalten ist. Was macht diese Klasse besonders ist, dass die layerClass Klassenmethode außer Kraft gesetzt wird, und gibt die CAEAGLLayer Klasse anstelle der CALayer Klasse, als Standard ist.

UIView und CALayer Arbeit in Paaren. Alle UIView Objekte von einer CALayer gesichert werden, ist die CALayer das Objekt verantwortlich für das Layout und Rendering auf dem Bildschirm. Die UIView ist ein Delegierter der CALayer und ist verantwortlich für seine Grafiken zeichnen, wenn nötig.

CALayer wird es Delegierter (der UIView) ziehen in eine CGContextRef lassen. Es ist ein Rahmen pro UIView, so kann man nicht CGBlendMode verwenden, um mehrere Ansichten zu mischen, da es funktioniert nur innerhalb eines einzigen UIView Kontext.

Das Mischen von CALayer sollte mit Hilfe der Filtereigenschaften erfolgen. Diese sind definiert für iPhone OS aber die verfügbaren Filter sind undefined nach der Dokumentation. Dies liegt daran, Core Image auf iPhone OS zu diesem Zeitpunkt nicht verfügbar ist.

Andere Tipps

Ich glaube nicht, Sie in der Lage sein werden Farben in diesem Sinne zu mischen. Das Beste, was Sie tun können, ist eine völlig andere haben die Verschleierung oder haben die oberste Schicht semi-transparent (in diesem Fall, werden Sie den Teil unterhalb sehen.) - aber Sie werden nicht in der Lage sein, XOR-Typ Zeichnung zu tun

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top