Performance
POINT
Tuning 前に 自分の環境の 期待できるか知っておくこと
速さは十分かどうか 知ること
POINT
OpenGL は ClinetServer 型のため Command を内部で Buffering する
実行前に, App に制御がもどる
測定時にはこの動作は困る
そこで glFinish() ですべての glCommnd の終了待ちをする
( glFinish == GL との同期処理 )
const int s = glutGet( GLUT_ELAPSED_TIME );
// N Frame 描画
Render();
glFinish();
const int e = glutGet( GLUT_ELAPSED_TIME );
PipeLine の限界を測定する
POINT
OpenGL は PipeLine Architecture
頂点 Pass と Fragment Pass がある
POINT
先ずは 不要な処理をしてないかチェックする。
以下は Fill 限界に影響する
[.] GL_ALL_TEST
[.] GL_DITHER
[.] GL_MULTISAMPLE
POINT
幾何形状限界
頂点を PipeLine に送らないようにする
[.] Frustum Culling
[.] GL_CULL_FACE
Fill 限界
[.] Texture Size を小さくして VRAM にのせる
[.] Texture Addressing を Mipmap Nearest に変更して Fetch 回数を減らす
[.] 上書きする Pixel 量を減らす ( 手前からかく )
State 変更
[.] 不要な State の変更は避ける