はじめに
会社からの課題で使うことになったのだが、いろいろとハマりポイントがあったので忘れないようにメモメモφ(..)
導入までを解説する
開発環境
Windows10 64bit
VisualStudio Community2015
SDKの取得
開発者アカウント登録
https://developer.nvidia.com/gameworks
からアカウントを登録しましょう。詳細は割愛
PhysXリポジトリのアクセス申請
プライベートリポジトリになっているので
https://developer.nvidia.com/physx-source-github
から申請します。
コードのDL
アクセスができるようになれば、GitHubのリリースのタブから最新のPhysXをダウンロードします。
2016/10/12現在での最新版は3.3.4です。
PhysXのビルド
32bit向けのDEBUGのみビルドしてみます
ダウンロードデータの中身
ダウンロードデータはCドライブのルートに置いときます
ダウンロードデータルート
- APEXSDK(今回は触れない、布とか粒子とかを扱える)
- PhysXSDK(今回使う物理エンジン)
- PhysXSDK\Bin(サンプルやスニペットでビルドしたデータが入る)
- PhysXSDK\Include(おなじみのフォルダー)
- PhysXSDK\Lib(初期状態では必要最低限のライブラリが不足してる)
- PhysXSDK\Source(PhysX本体)
- PhysXSDK\Snippets(PhysXの使い方を理解するための簡単なサンプル)
- PhysXSDK\Samples(PhysXで何ができるかのデモリール的なサンプル)
- PhysXVisualDebugger(PhysXをリアルタイムで別ウィンドウでデバッグできる優れもの)
PhysXのビルド
PhysXSDK\Source\compiler\vc14win32
にソリューションファイルがあるのでアクセス
すべてのプロジェクトを選択し、プロジェクトのプロパティで
C/C++の全般の警告レベルをいいえ(/WX-)にします
C/C++のコード生成のランタイムライブラリをマルチスレッドデバッグ/MDdにします
ビルド!
エラー C2373 '__pfnDliNotifyHook2': 再定義されています。異なる型修飾子です。
が3つほど出るので とりあえずその行をコメントアウトします。今のところ不具合は特に出てないですけど、ほかに方法があるのかも
プロジェクトのクリーンを行い、リビルド!
無事完了すれば
PhysXSDK\Bin\vc14win32 にdllファイルが生成、
PhysXSDK\Lib\vc14win32 にライブラリデータが生成されます
サンプルのビルド
PhysXSDK\Samples\compiler\vc14win32
にソリューションファイルがあるのでアクセス
特に設定はせずにビルド!
PhysXSDK\Bin\vc14win32 のフォルダーにexeが作成されます
色々サンプルを触って遊べます
スニペットのビルド
PhysXSDK\Snippets\compiler\vc14win32
にソリューションファイルがあるのでアクセス
すべてのプロジェクトを選択し、プロパティーを開き、C/C++の全般の警告をエラーとして扱うをいいえ(/WX-)にする
プロジェクトのクリーンを行いビルド!
PhysXSDK\Bin\vc14win32 にexeが生成されます
かんたんなサンプルが動いている様子を確認できます
Visual Debugger
ダウンロードしたデータにインストーラーが入っているのでインストール
インストールしたデータはデフォルトでは
C:\Program Files\NVIDIA Corporation\NVIDIA PhysX Visual Debugger
になっているかと思います
このフォルダー内のPVD2.exeがビジュアルデバッガです
ビジュアルデバッガを起動した様態でPhysXのサンプルを起動するとその様子をデバッグできます
自分のプロジェクトでPhysXを使用
パス
自分のプロジェクトのVC++ディレクトリに、ビルドしたIncludeとLibを指定し、
# include <PxPhysicsAPI.h>
# pragma comment (lib,"PhysX3CommonDEBUG_x86.lib" )
# pragma comment (lib,"PhysX3DEBUG_x86.lib" )
# pragma comment (lib,"PhysX3CookingDEBUG_x86.lib" )
# pragma comment (lib,"PhysX3CharacterKinematicDEBUG_x86.lib" )
# pragma comment (lib,"PhysX3ExtensionsDEBUG.lib" )
# pragma comment (lib,"PhysX3VehicleDEBUG.lib" )
# pragma comment (lib,"PhysXProfileSDKDEBUG.lib" )
# pragma comment (lib,"PhysXVisualDebuggerSDKDEBUG.lib" )
# pragma comment (lib,"PxTaskDEBUG.lib" )
と書けば開発準備OK!
あとは
http://docs.nvidia.com/gameworks/index.html
のリファレンスとビルドしたサンプルを見ながら作っていこう!