2016-07-06 6 views
-1

私は工学アプリケーションを作成するためにSwift、Metal/MetalKitを学習しています。私は視力が弱いためInterface Builderを使用しません(私はxcodeで迷子になります)。 は27" 日のiMacをOSX 10.11を実行している。mtkviewの2番目のビューを作成するには

私は3Dグラフィックスの表示実行中のmtkviewを持っていますが、(隅に)上に別のビューを追加する必要があるビューの方向を表示する。

私は2番目のOpenGLビューを持っていましたこれはLinuxのgtkmmとmesa 3dですが、メタルで2番目のビューを追加する方法に関するドキュメントは見つかりません。

私のプログラムに2番目のmtkviewを追加しようとしましたが、それが認識されていると思います)。

これを行う最も良い方法は何ですか?

  1. 既存のビューの上に2番目のmtkviewを追加しますか? (もしそうなら、どうすればいいですか)
  2. 2番目のビューを既存のビューレンダリングプロセスのpertとしてレンダリングしますか?
  3. 他の方法はありますか?

これを行う方法に関する情報や例はありますか?

+1

2番目のビューの作成と追加に使用するコードを共有できますか?常にそうであるように、ビューのフレームを明示的に設定し、それをプライマリビューのサブビューまたは兄弟ビューとして追加する必要があります。私は 'MTKView'sが一般的な' NSView'sとまったく同じように複合化することを期待します。 2番目のビューが表示されない場合は、デバッガでビューの階層とビューのプロパティを調べることができます。 – warrenm

+0

こんにちは、ちょっと質問を編集して、最後のリストが正しく表示され、フレーズの一部が新しい段落から始まるようにしました。 – trincot

+0

こんにちは、あなたの返信ありがとう。問題を混乱させないように、私のコードを整理するのにはしばらく時間がかかりました。私のコードはMariusのチュートリアルに基づいています(ありがとう!マリウス)。私はそれを使って遊んできました。 – 1dering

答えて

0

これには本当に簡単な答えがあります。メタルはいわゆるビューポートを使用して、ビューのどの部分を描画するかを指定します。ビューポートから出るものはすべてそのままです。これは、あなたがそれを使用する方法である。

もちろん
// 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 

ので、表示サイズの変更とは、mtkView:drawableSizeWillChange:方法でそれを置くとき、それが唯一の変更として、あなたは常に、topLeftビューポートを計算するべきではありません。

関連する問題