2016-07-06 6 views
-1

Ich lerne Swift, Metal/MetalKit um eine Engineering App zu erstellen. Ich benutze den Interface Builder wegen schlechten Sehvermögens nicht (ich bin in xcode verloren). mit OSX 10.11 auf 27" iMac.wie man die zweite Ansicht in/über mtkview erstellt

Ich habe eine Lauf mtkview 3D-Grafik anzuzeigen, benötigt aber eine andere Ansicht oben (in der Ecke) hinzufügen, um die Ausrichtung der Ansicht zu zeigen.

hatte ich einen zweiten opengl Blick dafür in Linux, gtkmm und mesa 3d, aber ich kann keine Dokumentation darüber finden, wie man eine zweite Ansicht in Metall hinzufügt.

Ich habe versucht, eine zweite mtkview zu meinem Programm hinzuzufügen, aber nichts passiert (ich don ' Ich denke, es ist erkannt)

Was ist der beste Weg, dies zu tun?

  1. einen zweiten mtkview über die vorhandene Ansicht hinzufügen? (Wenn ja, wie)
  2. rendern die zweite Ansicht als pert der vorhandenen Ansicht Renderprozess?
  3. eine andere Methode?

Hat jemand irgendwelche Informationen oder ein Beispiel, wie man das macht?

+1

Können Sie den Code teilen, den Sie zum Erstellen und Hinzufügen der zweiten Ansicht verwenden? Wie immer müssen Sie den Rahmen der Ansicht explizit festlegen und ihn entweder als Teilansicht oder als gleichgeordnete Ansicht der primären Ansicht hinzufügen. Ich würde erwarten, dass MTKViews genau so zusammengesetzt werden wie generische 'NSView's. Wenn die zweite Ansicht nicht angezeigt wird, sollten Sie die Ansichtshierarchie und die Eigenschaften der Ansichten im Debugger überprüfen können. – warrenm

+0

Hallo Ich habe Ihre Frage ein wenig bearbeitet, so dass die Liste am Ende richtig angezeigt wird, und einige Ihrer Sätze beginnen bei einem neuen Absatz. – trincot

+0

Hallo, danke für deine Antworten. Ich brauchte eine Weile, um meinen Code aufzuräumen, damit das Problem nicht verwechselt werden konnte. Mein Code basiert auf einem Tutorial von Marius (Danke! Marius). und ich habe damit herumgespielt. – 1dering

Antwort

0

Darauf gibt es eine wirklich einfache Antwort. Metal verwendet den sogenannten Ansichtsport, um anzugeben, welcher Teil der Ansicht gezeichnet werden soll. Alles außerhalb des View-Ports bleibt so wie es ist. Dies ist, wie Sie es verwenden können:

// Draw the full view here 

let topLeft = MTLViewport(originX: 10, 
          originY: 10, 
          width: size.width/3, 
          height: size.height/3, 
          znear: 0, 
          zfar: 1) 

renderEncoder.setViewport(topLeft) 

// Draw the top left view here 

Natürlich sollten Sie nicht immer berechnen die topLeft Sichtöffnung, wie es ändert sich nur, wenn die Größenänderungen und daher ist es in der mtkView:drawableSizeWillChange: Methode setzen.

Verwandte Themen