> SetGraphModeのようなスクリーンモード変える関数とは別に
> 描画スクリーンのサイズを変更するよう関数があり
> その描画領域に対して画角を指定できるとよいと思うのですが、
> そのような方法はないでしょうか?
ぴったりな機能はありませんが、射影行列とビューポート行列を直接指定する関数( SetTransformToProjection と SetTransformToViewport )を使用すれば
Fov の計算式はシンプルになります
// 現在のクライアント領域のサイズを取得
int wwid, whei ;
GetWindowSize( &wwid, &whei ) ;
// 射影行列を設定
MATRIX ProjectionMatrix ;
CreatePerspectiveFovMatrix( &ProjectionMatrix, tan( DX_PI_F / 3.0 / 2.0 ) * whei / wwid, 0.001f, 1000.0f, ( float )whei / wwid ) ;
SetTransformToProjection( &ProjectionMatrix ) ;
// ビューポート行列を設定
MATRIX ViewportMatrix ;
CreateViewportMatrix( &ViewportMatrix, wwid / 2.0f, whei / 2.0f, ( float )wwid, ( float )whei ) ;
SetTransformToViewport( &ViewportMatrix ) ;
// 描画領域を設定
SetDrawArea( 0, 0, wwid, whei ) ;
行数は増えてしまいますが… (- -;;