メインメニューを開く

「フェンス」を編集中

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
8行目: 8行目:
  
 
たとえば[[ゲーム]]で1フレームごとに[[マルチスレッド]]を止めたい場合があるとします。
 
たとえば[[ゲーム]]で1フレームごとに[[マルチスレッド]]を止めたい場合があるとします。
フェンスがない時代はGPU自体がアイドル状態(タスク全停止)になるのを待っていました。
+
フェンスがない時代はアイドル状態(タスク全停止)になるのを待っていました。
<source lang="csharp">
+
<source lang="c">
gpu.addTask(renderTask);
+
 gpu.addTask(task1);
gpu.addTask(computeTask);
+
 gpu.addTask(task2);
 +
 gpu.addTask(computeTask);
 
  gpu.waitForIdle();
 
  gpu.waitForIdle();
 
</source>
 
</source>
  
一方でフェンスを使うと「グラフィックスシェーダーはfenceで1フレームごとに止めるけどコンピュートシェーダーは止めないでぶん回す」といったことができます。
+
フェンスを使うと「グラフィックスシェーダーはfenceで1フレームごとに止めるけどコンピュートシェーダーは止めないでぶん回す」といったことができます。
<source lang="csharp">
+
<source lang="c">
 
  var fence = gpu.createFence();
 
  var fence = gpu.createFence();
  gpu.addTask(renderTask, fence);
+
  gpu.addTask(task1, fence);
 +
gpu.addTask(task2, fence);
 
  gpu.addTask(computeTask, null);
 
  gpu.addTask(computeTask, null);
  gpu.waitForFence(fence); // renderTaskが終わるのを待つ
+
  gpu.waitForFence(fence); // task1とtask2の両方が終わるのを待つ
 
</source>
 
</source>
 
[[category: GPU]]
 

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)