DxLibを微妙に軽量化できるようにした。微妙すぎる。
手軽にDirectXを使えるライブラリとして有名なDxLibですが、えらく機能豊富です。
ところがでかい。リリースビルドで1MB超えるとうわぁ・・・ってなるのは私だけですか。
さて、DxLib.hを読むとマクロ定義でリンクするライブラリが変わるようです。
「これで機能絞り込めばサイズ小さくなるんじゃ・・・!」
しかしこれは関連ライブラリをリンクするか決めるだけなので、利用側のDxLib.libをビルドし直さないとリンクエラーになってしまいます。
「どうせリビルドするなら機能限定マクロ増やそうぜ・・・!」
// DXアーカイブがいらない方は次のコメントを外してください // ( 2010/12/26現在このコメントアウトを外すとライブラリのコンパイルが通らなくなります ) //#define DX_NON_DXA
というわけでDX_NON_DXAを使えるようにしました、って話。
結果としては、プログラマブルシェーダーが使えなくなる代わりにリンク後のexeがリリースビルドで100KB小さくなりました。微妙ですねーあはは。
ビルドメモ
- DXAを内部で使っているのは大きく分けて二箇所
- タスクスイッチ抑制用?キーボードフックのDLL
- DX_NON_STOP_TASKSWITCHを指定すればおk
- 画像フィルタに使うプログラマブルシェーダーのプリセット
- プログラマブルシェーダー禁止マクロ、DX_NON_SHADERを追加
- UseShaderを強制的にfalseに
- UseShader判定してるところは無駄なのでifndefで囲む
- プリセット使えないだけでいいかと思ったら、プリセットで使用可否を判定してた
- そもそも今回は3D使わない前提でやってるので無視
- プログラマブルシェーダー禁止マクロ、DX_NON_SHADERを追加
- タスクスイッチ抑制用?キーボードフックのDLL
- DxUseClibもリビルド
- libvorbis-1.3.2ではos,hとmisc.hがincludeになかったのでコメントアウト
- 何事もなく動いたってそれはそれでどうなん
- libpngは1.5系から恥ずかしがり屋になったそうなので丁寧に取得するように
- 参考 http://d.hatena.ne.jp/shiku_otomiya/20110907
- あとlibpng.libももちろん作り直し
- libjpegはそのまま動いた
- けどコンパイルが(VSっ子にとっては)わかりにくくて心が折れかけた
- nmake
- 〜vcx.v10を自分でリネームするのかと無駄骨を
- けどコンパイルが(VSっ子にとっては)わかりにくくて心が折れかけた
- libvorbis-1.3.2ではos,hとmisc.hがincludeになかったのでコメントアウト
プログラムを作ろうとする度にこんなことやってたら、どれだけ時間があっても足りないな。。