2016-05-27 13 views
0

Ich debugge ein Problem, in dem eine Bibliothek, die ich verwende, eine OpenGL-Ansicht erstellt und eine Speicherwarnung auslöst.CGAffineTransform in der OpenGL-Ansicht und ihre Auswirkung auf die Ansichtsgröße

Eine Sache, die ich bemerkte, ist, dass das Einstellen der Ansicht auf einen Bruchteil der Fenstergröße bewirkt, dass es gut funktioniert. Beim Debuggen über den View-XCodes-Interface-Debugger sehe ich, dass die Grenzen der View weit über die Grenzen der Parent-View hinausreichen. Beim Drucken der Ansicht in Frage sehe ich dies:

<RenderView: 0x140a61d10; frame = (5 0; 1019 728); transform = [1019, 0, 0, 728, 0, 0]; layer = <CALayer: 0x140ad0a40>> 

Ich bin mit diesem nicht vertraut, aber von den CGAffineTransform docs Lesen scheint es, dass die eingestellten wobei Variablen „a“ und „d“ ist, die auf die Skala sx entsprechen und sy.

Also meine Frage ist, würde diese Umwandlung tatsächlich eine Ansicht anzeigen, die 1019 * 1019 x 728 * 728 ist, scheint dies verdächtig? wahrscheinlich ein Fehler in der Bibliothek, oder ist mein Verständnis falsch?

Ich sehe dieses Problem mit Xcode 7 auf mehreren Geräten, die derzeit auf einem iPad Pro 9.7 mit 9.3.1 testen.

Antwort

0

Hier ist eine Klarstellung, was geht, wo zwischen einem 2x3 CGAffineTransform und einem GLKMatrix4 ...

Ihre CGAffineTransform, die die bevorzugten oder tatsächlichen Transformation Ihrer Ansicht oder Asset-Abmessungen und Orientierung (oder Aspekte) zu einem GLKMatrix4 übersetzen darstellt (oder MAT4, die ein Vielfaches gegenüber der Position, in der Vertex-Shader ist), so:

CGAffineTransform preferredTransform= [videoTrack preferredTransform]; 

GLfloat preferredTransformMatrix[] = { 
preferredTransform.a, preferredTransform.b, preferredTransform.tx, 0.0, 
preferredTransform.c, preferredTransform.d, preferredTransform.ty, 0.0, 
0.0,     0.0,     1.0,     0.0, 
0.0,     0.0,     0.0,     1.0 
}; 

Dies ist nur ein Beispiel für die richtige Position für jeden Wert in einer 2x3-Matrix für eine 4x4-Matrix zeigt.