OpenEXRをDirectXで利用する
- プロジェクトのプロパティを設定
※C/C++、全般、追加のインクルードディレクトリ
D:\OpenEXR-1.2.1-win32\include\Imath;D:\OpenEXR-1.2.1-win32\include\Iex
を追加
※C/C++、全般、プリプロセッサの定義
PLATFORM_WIN32
を追加
- インクルードの順序
ImathEuler.hをincludeするとき、Windows.hでmaxとminのマクロが定義されていて、エラーになった。
undefするかImathEuler.hをwindows.hの前に置くことで解決した
- ソース
#include <ImathEuler.h> #include <Windows.h> #include <mmsystem.h> #include <d3dx9.h> main() { D3DXMATRIX m, mtmp; D3DXMatrixRotationY( &mtmp, 2.0f ); m = mtmp; D3DXMatrixRotationX( &mtmp, 1.0f ); m *= mtmp; Imath::Euler<float> e; e.setOrder(Imath::Euler<float>::YXZ); // 回転を掛け合わせる順序を指定する e.extract(*(const Imath::Matrix44<float> *)&m); printf("%f, %f, %f\n", e.x, e.y, e.z); }
- 実行結果