画面更新
MATLAB グラフィックス システム
MATLAB® グラフィックスは複数の実行スレッドを使用して実装されます。次の図は、更新プロセス中にメイン スレッドとレンダラー スレッドがどのように相互作用するかを示しています。MATLAB 側にはグラフィックス モデルが含まれ、グラフィックス ハードウェアによってレンダリングされる図形を記述しています。レンダラー側には、独自のメモリ システム内にこの図形のコピーが含まれています。グラフィックス ハードウェアは MATLAB の実行をブロックせずに画面をレンダリングすることができます。
グラフィックス モデルを変更する場合は、その更新がグラフィックス ハードウェアに渡されるようにしなければなりません。グラフィックス ハードウェアでは一部の MATLAB データ型がサポートされていないため、更新の送信はボトルネックになる可能性があります。更新プロセスでは、データが正しい形式に変換されなければなりません。
図形がグラフィックス ハードウェアのメモリにある場合、このデータを使用して更新で送信されるデータを最小限にすることで、パフォーマンス上の利点を実現できます。
更新の管理
更新の手順は以下のとおりです。
プロパティの変更やオブジェクトの追加など、画面の更新が必要となる変更を収集する。
グラフィックス モデル内の依存関係を更新する。
これらの更新をレンダラーに送信する。
レンダラーがこれらの更新を受け付けるまで待機した後、実行を MATLAB に返す。
関数 drawnow
を呼び出して更新を開始します。drawnow
はレンダラーが更新を受け入れたときに実行を完了しますが、レンダラーが画面の更新を完了する前にレンダラーが更新を受け入れる場合があります。
明示的な更新
関数の実行中に、グラフィックス オブジェクトを Figure に追加したり、既存のオブジェクトのプロパティを変更したりしても、画面が直ちに更新されないこともあります。更新プロセスは、更新が必要なグラフィックスが変更され、コードで以下の処理が行われるときに発生します。
drawnow
、pause
、figure
または更新を実際に行う他の関数を呼び出す (drawnow
を参照)。他のプロパティに値が依存しているプロパティをクエリする (自動計算されるプロパティを参照)。
実行を完了し、制御を MATLAB プロンプトまたはデバッガーに返す。