「フェンス」を編集中
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
8行目: | 8行目: | ||
たとえば[[ゲーム]]で1フレームごとに[[マルチスレッド]]を止めたい場合があるとします。 | たとえば[[ゲーム]]で1フレームごとに[[マルチスレッド]]を止めたい場合があるとします。 | ||
− | + | フェンスがない時代はアイドル状態(タスク全停止)になるのを待っていました。 | |
− | <source lang=" | + | <source lang="c"> |
− | + | gpu.addTask(task1); | |
− | + | gpu.addTask(task2); | |
+ | gpu.addTask(computeTask); | ||
gpu.waitForIdle(); | gpu.waitForIdle(); | ||
</source> | </source> | ||
− | + | フェンスを使うと「グラフィックスシェーダーはfenceで1フレームごとに止めるけどコンピュートシェーダーは止めないでぶん回す」といったことができます。 | |
− | <source lang=" | + | <source lang="c"> |
var fence = gpu.createFence(); | var fence = gpu.createFence(); | ||
− | gpu.addTask( | + | gpu.addTask(task1, fence); |
+ | gpu.addTask(task2, fence); | ||
gpu.addTask(computeTask, null); | gpu.addTask(computeTask, null); | ||
− | gpu.waitForFence(fence); // | + | gpu.waitForFence(fence); // task1とtask2の両方が終わるのを待つ |
</source> | </source> | ||
− | |||
− |