OpenGL Pipeline

  • OpenGLの描画命令はハードウェアが実行できる命令へと変換されますが、その変換された命令はすぐにハードウェアへ転送さず、ある程度の命令の量がバッファにたまってから転送されます。
  • 強制的に、命令をハードウェアに転送させる命令として、関数glFlushがあります。
  • glDrawPixelsやglReadPixelsのように、いくつかの関数はその命令の前にバッファにたまっている命令をすべて転送します。
  • Display List は、描画命令を、あらかじめハードウェアが実行できる命令に変換し、メモリに溜めておき、実行時にそれを使用することで高速化を行います。なので、いったんハードウェアが実行できる命令に変換した後、その命令の一部分だけを変更することはできません。
  • Vertex Array は、頂点データを一まとめにしてハードウェアに転送し、続けて座標変換などの計算を行うことで高速化を行います。
  • Vertex Buffer Object は、あらかじめ頂点データをハードウェアに転送しておき、必要に応じてそのデータを使用します。データ転送のコストを減らすことで高速化を行います。