2012-02-13 12 views
3

私は複数のNSOpenGLViewsを使用しています。すべてはNSWindowcontentViewとして設定され、それ自身の画面に表示されます。すべてNSOpenGLViewsSceneで宣言された-(void)render:(NSOpenGLView *)sender;メソッドを呼び出します。このクラスはすべての頂点を描画します。複数のディスプレイでのOpenGL

すべてうまくいきますが、パフォーマンスは恐ろしいです:1つのディスプレイですべてがうまくいきます(約500fps)。ディスプレイを追加すると非常に遅いです(約20fps)。

スピードアップが可能ですか?

+0

これがうまくいくかどうかわかりませんが、描画前にレンダリングメソッドの先頭に '[sender.openGLContext makeCurrentContext]'を入れてみてください。 – user1139069

+0

これはうまくいきませんでしたが、私のopenGLコードにエラーが見つかりました(glEnd()を忘れました)、すべてがうまくいきます。一方、パフォーマンスは恐ろしいです。 – Fatso

+0

レンダリングしているウィンドウとビューポートの数について詳しく説明できますか?第2のディスプレイは同じグラフィックスカード、または別のGPUにありますか? – holtavolt

答えて

1

あなたは塗りつぶし可能性がありますか? GPUはすべて非常に上手くいいですが、ピクセルプッシュはあなたに彼らがすることができる最も遅いものです。いずれの画面でも何も描画しないときのフレームレートは何ですか?

他に起こっていることは、ソフトウェアエミュレーションを取得していることです。これはあなたのカードが何かをすることをサポートしていない場合に起こります。

+0

私はもうすぐあなたに戻ってきます、私は最初に2番目のディスプレイを見つけなければなりません(ちょうど他の町に移動し、私のテレビは家にいます)。 – Fatso

関連する問題