1

自然物理学を模倣するプログラムを書いています。OnDrawメソッドをオーバーライドする以外FillRectangle(x,y,1,1)に、ピクセルごとにオブジェクトを描画するより良い方法があるかどうかを知りたいです。

DirectX または OpenGL を使用して同様のアクションを実行する方法はありますか? 私の知る限り、Graphicsはコンピュータのビデオ カードを使用していないためです (間違っていたら訂正してください)。

そうは言っても、オブジェクトが実際よりも遠くに見えるように (モニターは 2D しかないため)、または近くに見えるように、数学的な計算を使用して相対的な象限サイズを計算する 3D 環境の作成に関して、いくつか考えてみたいと思います。

4

1 に答える 1

1

はい。FillRectangle を使用してピクセルごとに描画すると、非常に効率が悪く、処理速度が大幅に低下します。おっしゃるとおり、DirectX や OpenGL などのグラフィック レンダリング システムを使用する必要があります。どちらを選択するかはあなた次第です。Web で簡単な検索を行うと、3D グラフィックスの使用方法に関するチュートリアルが多数見つかります。

OpenGL は「このオブジェクトを空間に描画する」ことに重点を置いており、可能であればグラフィック カードを利用してレンダリングを行います。ピクセルを気にする必要はなく、寸法、カメラ アングル、シェーダーなどを指定します。

OpenGL でピクセルを描画できますが、これは 3D グラフィックスを描画する「正しい」方法ではありません。

Vasaの質問に応えて編集:

OpenGL は、グラフィック カードの機能とドライバーに基づいて最善を尽くすと思います。一般に、OpenGL は直接ピクセルを描画するための最適なオプションではありません。しかし、それを覚えておいてください

  1. ピクセルは、マシンによってサイズが異なります。これと一緒に暮らすことを期待していますか?それとも、低解像度の画面に大きなディスプレイを、高解像度の画面に小さなディスプレイを置いて生活していますか? 乗算が含まれる場合があります。リテラル ピクセルを使用すると、さまざまな画面で乗算を開始すると、アーティファクトや不正確さが生じます。

  2. X からピクセルへの直接マッピングが必要です。OpenGL は float 値を使用します。これらは整数の 1 対 1 のマッピングではありませんが、正比例を使用します。スケールを選択すると、OpenGL が突然比率を歪め始めることはありません。

重要なのは、絶対ピクセルではなくプロポーションです。あなたのケースが異なる可能性があることは認めますが。

2D 描画については、これを参照してください。

http://basic4gl.wikispaces.com/2D+Drawing+in+OpenGL

于 2012-08-20T11:36:01.490 に答える