3

Minecraftのクローンを作成してOpenGLとLWJGLを学習しようとしていますが、行き詰まっています

ブロックを簡単にレンダリングでき、wasdコントロールを備えた一人称カメラを使用して、ブロックを配置できるようにしようとしていますが、どのキューブとそのキューブのどちら側を確認できるのかわかりません。画面の中央を見ている/中央にあるので、その立方体に隣接して別の立方体を配置できます。

私は3DパースペクティブにgluPerspectiveを使用し、世界を回転させるためにglRotatefを使用しています。これはごく普通のことです。

4

1 に答える 1

3

1つの手法は、id-bufferを使用することです。フレームバッファを使用して、シーンを一度に2つのテクスチャに描画します。最初のテクスチャは、典型的なカラーテクスチャになります。2つ目は、整数を格納するテクスチャになります。シーンを描画する前に、各立方体の面に番号を割り当てます。これらの数値をシェーダーに渡します(これには均一変数が機能します)。フラグメントシェーダーは、これらの数値を整数テクスチャに「描画」すると同時に、カラーテクスチャに通常のシェーディングを実行します。マウスカーソルにあるものを見つける必要がある場合は、を使用しますglReadPixels()

これはすべて、最新のOpenGL(3以上)を使用していることを前提としています。固定機能パイプライン(ラメ)で立ち往生している場合は、各立方体の面に一意の色を割り当てて、無地の色でバックバッファーに描画することもできます。テクスチャリングなどを必ずオフにしてください。それが終わったら、を使用glReadPixels()してマウスカーソルに描かれたものを見つけます。次に、通常どおりに描画し、バッファを交換します。(これが私が話していることを示すいくつかの古いコードです:http ://www.lighthouse3d.com/opengl/picking/index.php3?color1 )

もう1つの手法は、画面に「光線を当てる」ことです。基本的に、ジオメトリ内の各形状に対していくつかの方程式をテストします。これらのテストに合格すると、交差があり、クリックされた形状がわかります。私はこの方法にあまり慣れていないので、他の人に説明を任せます。

于 2012-12-14T00:45:41.757 に答える