2013年10月3日木曜日

DXライブラリをビルドしてみる

しばらく放置していたらEinさんのページが変わっていたのでリンク修正.開発環境も変わってたので更新してみた.

デスクトップにミクさんを出現させようということで, ちょっと調べてみる. ミクさんを出現させるだけなら既に沢山?やられているので, 自分でやることもないんだけれど...

PMD/PMXファイルを読みこめるライブラリはいろいろあるらしい.

  • VPVP wiki: MMD周辺ライブラリ
  • MMDD for .NET (←現在開発中らしいので期待!)
    さっきgit cloneしてテストプロジェクトで試してみたら, 物理演算ONにすると頂点がどこかへ行ってしまった.

3D Computer Graphicsなんて全然良くわからないので, とりあえずDXライブラリあたりから触って見ることにした.

が, まずライブラリをビルドすると, コンパイラにunresolved external symbol __iobと怒られてしまった. (覚えてないがlibpngあたりだった気がする)

in sources USE_MSVCRT=1 does fix the issue.

なんかlibcに依存してコンパイルされてるのが元凶らしい, ということで依存ライブラリもまとめてビルドします.

共通の設定とか

基本的にはVisual Studio 2012の既定値だけど, 全部x64向けにビルドしました
今回は音声関係の機能は使用しないので, その辺はDxCompileConfig.hで無視するように設定しました.

zlib

  1. ソースコードをダウンロード
  2. Win32スタティックライブラリの空のプロジェクトを作成
  3. DLしたソースコードのうち,ルートディレクトリにある.cと.hをプロジェクトに追加
  4. ビルドできるはず

libpng

  1. ソースコードをダウンロード
  2. Win32スタティックライブラリの空のプロジェクトを作成
  3. DLしたソースコードのうち,ルートディレクトリにある.cと.h(ただし,example.cを除く)をプロジェクトに追加
  4. scriptsフォルダにあるpnglibconf.h.prebuildpnglibconf.hにリネームしてプロジェクトに追加
  5. 先に作ったzlibのProjectDirにincludeのパスを通したらビルドできるはず

libjpeg

  1. ソースコードをダウンロード
  2. Win32スタティックライブラリの空のプロジェクトを作成
  3. jconfig.vcをjconfig.hにリネーム
  4. .c .h (Example.c, jmemdos.c, jmemmac.c 以外)をプロジェクトに追加
  5. ビルドできるはず

Bullet Physics

  1. ソースコードをダウンロード
  2. さっきまでの同じで,空のプロジェクト→ソースファイル追加でビルドはできるはず

Bullet Physicsはビルドはできるけど,そのままだとベクトルの代入操作のところでアクセス違反してしまう. アラインメントの問題だけど, btScalar.hに定義されている

#define BT_USE_SSE

をコメントアウトするとちゃんと動きました

DXライブラリ

これもソースファイル適当に空のプロジェクトにまとめて追加して, IncludeとLibraryのパス通します.

DxLib.hライブラリリンク定義のところを適当にコメントアウトしたり, Bullet Physicsはファイル名変わってるから直したりします. するとビルドが通るので, 使えるようになります.

なんか今回適当で誰の役に立つのか謎ですが, こんな感じでDXライブラリ使えるようになりました.

0 件のコメント:

コメントを投稿