高速に2D描画したかったら何がいいの?
今度は2次元格子上のエージェントを扱いたいので、出来るだけ高速に格子オブジェクトを描画したい。
後の拡張性はとりあえずなくてもよい。今のところWindowsで動かしたい。
使う言語も速い方がよいが、まあC#くらいなら良いかなあと思って、何個か速度を比較してみた。
やっぱり、標準のAPIは遅いし、Siv3Dもあと一歩というところ。
なので、今回はOpenGLを使ってみたいと思う。
指標は、1秒間に3x3の正方形を何個描けるか(Sq/s)で比較した。
環境はVisual Studio Community RC2017。特に平列化は行わず、Releaseビルドにしたもの。
実装の詳細は適当なので割愛する。ガチガチにチューニングすればずっと改善するかも知れないけど、あくまで目安として。
言語 | 実装 | スループット |
C# | WPF DrawRectangle | 384k |
C# | WPF bitmap直接 | 12.8M |
C++ | Siv3D | 27.5M |
C++ | OpenGL | 64.0M |