glDrawArryas の方が glDrawElements より速い理由

以前、僕のPCでベンチマークをとった時はglDrawArryasが勝利しました。なので、glDrawArraysを使えるようなデータ構造にしたのですが、最近になってglDrawElementsの方が速いということを知りました。資料は古いですが、ビデオカード作ってる nVidia の人が言っているんですからきっとそうなんです。ちょっとショックでした。
でも、何故glDrawElementsの方が速いのでしょう? シーケンシャルアクセスしてくれる glDrawArryas の方が速いなら納得ができるのですが、ランダムアクセスになるであろう glDrawElements の方が速いのは何故? そんなわけで、「glDrawArryas glDrawElements faster」で調べてみたところ、僕と同様の疑問を投稿して、それに答えてくれているページを見つけました。
glDrawElements の方が glDrawArryas よりも速い理由は以下の2点.

  • キャッシュされた頂点の座標変換等の結果を利用できる
  • 渡すデータの量が少なくなるので転送コストが低くなる

なるほど、これなら納得。