先日作成したC#(OpenTK)のコードをC++に変換し、共通のソースコードでMac,Ubuntu(Linux),Windowsの各種環境において3D図形を描画することに成功しました!Write once, run anywhere!
そして・・・
祝!脱MS環境依存!!
(੭ु ›ω‹ )੭ु⁾⁾♡
OSはもちろん、開発言語等もMSに依存しなくなったよ。
以下が完成したC++のコードです。
https://github.com/ukaapple/cubeTest-cpp/blob/master/CubeInsWindow.cpp
立方体を100x100x100で、合計100万描画します。
TriangleStripで、かつ Instancing使っているので高効率です。メモリ12MB程度しか使わずに済んでいます。
TriangleStripに関しては、過去の日記で記述しています。こんな感じでテクスチャを貼るやり方のことです。
InstancingとはOpenGLの用語で、同じ形状を、位置情報だけいっぱい与えていろんな場所に描画することです。描画速度向上や使用メモリ量削減が期待できます。
ちなみにInstancingを使わないとメモリ使用量が340MBに跳ね上がります。以下が使わない場合のソースです。
https://github.com/ukaapple/cubeTest-cpp/blob/master/CubeWindow.cpp
以下のコードで CubeInsWindow を CubeWindow に変更すると、Instancingを使わない描画に切り替えることが出来ます。
https://github.com/ukaapple/cubeTest-cpp/blob/master/Program.cpp
タイトルバーにfpsを表示するようにしてるので、OpenGLのベンチマーク目的でいろんな環境で実行するのも良いかもしれません。
ちなみに、ハードウェアが同じならば、OSが同じでもベンチマーク結果はほぼ同じでした。
ただし、Windowsを除いて。なぜかWindowsだけ、明らかにFPSが5〜8%低かったです。
これでSteamでの開発準備ができました。次のアプリ、iOSで出そうかな?それともSteamで出そうかな。
(੭ु ›ω‹ )੭ु⁾⁾♡