計算シェーダーの時間を測定する必要があります。しかしもちろん、これは些細なことではありません。OpenGL Wiki - Performance I gotから、シェーダー呼び出しの前後に glFinish() を使用すると便利です。しかし、彼らはそれを使うのはあまり良くないとも言います. シェーダーの時間を測定する良い可能性はありますか? いずれにせよ、計算シェーダーの時間を測定する可能性はありますか?
私のコードは次のようになります。
renderloop()
{
//(1)
//(2)
if(updateFunction) //this is done just one time at the beginning
{
//update Texture with a compute shader
//...
glDispatchCompute();
glMemoryBarrier(GL_ALL_BARRIER_BITS);
}
//(3)
//(1)
//use the texture to do some marching cubes rendering
}
glFinish()
位置に挿入し、(1)
でタイマーを開始し、 で(2)
停止する必要があると思い(3)
ます。しかし、それが本当に機能し、正しいタイミング結果が生成されるかどうかはわかりません。参照ではレンダリングについて話していて、計算シェーダーはレンダリングではないからです。
OpenGL Timer_Queryも存在しますが、それがどのように機能するかはわかりませんし、それを使用するのが役立つかどうかもわかりません。これは私にとって初めてのことであり、現時点で完全に理解しているかどうかはわかりません。
ここからの回答によると、コードの一部を正確に測定することはほとんど不可能です。最良の方法は、フレームのレンダリング時間を測定することですが、私の目的には、フレームのレンダリング時間の計算シェーダー部分だけが必要です。
それを行うための最良の代替手段は何だと思いますか? フレーム全体のレンダリング時間を測定して使用するだけですか? それとも、他の測定方法でより良い体験をしましたか?