c++でマルチプラットフォーム対応(GUI込)のOpenGLコード253〜274日目

先日作成した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で出そうかな。

(੭ु ›ω‹ )੭ु⁾⁾♡

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です