2009-06-12 8 views
0

OpenGLレンダリングとは別のスレッドでタッチイベントが発生しているようです。これは本当ですか?この質問のコンテキストは、私がOpenGLの描画をトリガーするためにタッチイベントを使用して構築しているパーティクルシステムです。 OpenGLの描画はかなり重いので、私はスレッディングの影響を懸念しています。タッチイベントとOpenGL描画。それらは別のスレッドで発生しますか?

いずれの洞察も高く評価されます。

よろしく、 ダグ

答えて

1

いいえ。同じスレッド。

OpenGLサブシステムにコマンドを送信するとGPU上で実行されるため、「定義通り」ではないパラレルスレッドb/cグラフィックスプロセッサは必ずしもスレッドと同じ方法でスレッドの概念を持たないCPU。

デフォルトのOpenGLプロジェクトは、フレームごとにメインスレッドで起動され、OpenGLを呼び出すNSTimerを作成するだけです。

おそらく観察されることは、ほとんどの描画コマンドが非同期であることです。

[context presentRenderbuffer:GL_RENDERBUFFER_OES]; 
0

特に指定しない限り、あなたのコードは、メインスレッド上で実行されます。つまり、いくつかのライブラリ/ SDK呼び出しは独自のスレッドを起動します。この方法で間接的に他のスレッドを作成する可能性があります。

具体的には、私の経験が一致しません。タッチイベントは、OpenGLと同様にメインスレッドで処理されます。

+0

ハング上、OpenGLはGPUいないCPU上で実行されるため:あなたはiPhone上のオフスクリーンバッファに描画しているので、あなたがバッファを交換するときに描画終わった後、あなたは結果のみ表示されます定義上、それは並列スレッドで動作します。 drawViewは、通常、私が単にGPUに信号を送ると仮定したタイマーから呼び出されます。 これは、タッチイベントを伴うOpenGLアプリでも確認できます。それ以外の場合、レンダリングはタッチシーケンスの完了時にwaitngを停止します。 – dugla

関連する問題