たとえば、Windowsビットマップを遠近法でペイントする必要があります。
代替テキストhttp://img410.imageshack.us/img410/3905/example.png
Windows API C関数のみを使用します(MFC、DirectXなどは使用しません)。
たとえば、Windowsビットマップを遠近法でペイントする必要があります。
代替テキストhttp://img410.imageshack.us/img410/3905/example.png
Windows API C関数のみを使用します(MFC、DirectXなどは使用しません)。
OpenGL (または Direct3D) を使用できない場合は、おそらく独自のラスタライザーを作成する必要があります。また、これはひどい考えであることも指摘しておきます。OpenGL や Direct3D を使用できれば、アプリでこれらを機能させるのが本当に難しい場合でも、膨大な量の作業を節約できます。はい、OpenGL または Direct3D を使用して、画面上のコンテキストを作成せずにテクスチャにレンダリングできます。
理論的な側面では、正方形の各点に透視投影 (その用語を参照) を適用しています。それは各ポイントであり、コーナーだけでなく、その間のすべてのポイントです。通常、変換を 4 つの点に適用するだけで歪みが許容されると思われるので、代わりにそれを行います。
透視変換を使用して 3D ポイントを 2D ポイントに変換したら、ポリゴンを描画し、テクスチャから宛先コンテキストにピクセルをコピーします。デスティネーションの各ピクセルをループして、どのソース ピクセルがそこに到達するかを計算します。画像に表示されているように、X 軸を中心に回転するだけの場合は、宛先の各行がソースの行に対応するため、作業がはるかに簡単になります。Wolfenstein は、286 でのリアルタイムの遠近法レンダリングに同じトリック (Y 軸を除く) を利用しました。Doom も同様でした。
それでも続行したいが、私が言っていることがわからない場合は、独自のドゥーム クローンの作成方法を説明している古い本の 1 つを調べてください。それらの本には、あなたが探しているコードがあります。この wikiにアクセスして、「3D ゲーム プログラミングの黒魔術」または「Windows ゲーム プログラミングの専門家の秘訣」を探してください。他に1人か2人いるかもしれません。
このアルゴリズムを実装します。