現在スーパーマリオのような横スクロールジャンプアクションを作っています。
キャラクターがウィンドウサイズに比べて小さいので、マップを広く見渡せるようになっているのですが、
ズーム機能を付けて、プレイヤーの任意の視界の広さでプレイできるようにしたいと思っています。
そこで、GetDrawScreenGraph関数を使用して、簡単ではありますが以下のような実現方法を思いつきました。この方法だと640x480のウィンドウ内の中央320x240を二倍に拡大して画面に表示します。
//以下はゲームループ外で
static int Screen = MakeGraph( 320 , 240 ) ;
//以下はゲームループ内で
/* キャラクターやマップの描画などがここに書いてある */
GetDrawScreenGraph( 160 , 120 , 640-160 , 480-120 , Screen ) ;
DrawRotaGraph( 320 , 240 , 2.0f , 0.0 , Screen , FALSE ) ;
しかし、案の定というか、GetDrawScreenGraphは毎フレーム呼び出していると、さすがに処理落ちが発生しました。
キャラクター毎、マップ内のブロック毎に拡大するという方法も試したのですが、ズームすると微妙に1pixelずつずれたり他にも色々問題があってうまくできませんでした。
GetDrawScreenGraph関数を使って、こういったズーム処理をするのは無謀なのでしょうか?何か使い方が間違っているのでしょうか?
あるいは、他の方法を用いて、今映っている(映す予定の)画面を拡大縮小することはできるでしょうか?