0

Java/OpenGL アプリケーションのコンテキストで、27 個の小さな立方体で構成された黒い配線のみ (塗りつぶしなし) の大きな立方体を描画しています。そのために、次のコードを書きました。

for (int x = 1; x <= 3; x++) {
    for (int y = 1; y <= 3; y++) {
        for (int z = 1; z <= 3; z++) {
            wireCube(x - 2, 2 - y, 2 - z);
         }
    }
}

wireCubeメソッドは次を使用して実装されますGL11.glBegin(GL11.GL_LINE_LOOP);

への正しい呼び出しを使用しgluPerspectiveて投影を定義しgluLookAt、「カメラ」を配置するための正しい呼び出しを使用して、必要に応じて大きな立方体を表示することができます....私はそれにとても満足しています!!!

私の新しい問題は、大きな立方体の内部にあるすべての配線を「隠す」ためにこのコードを変更する方法です。シーンを視覚化するために、これらの配線は通常、学校で 3D ジオメトリを学習するときに破線で描かれるものです。

助けてくれてありがとう

マヌー

4

3 に答える 3

1

深度テスト(glEnable(GL_DEPTH_TEST))を有効にし、立方体の表面に四角形を配置します。

クワッドを描画するには、にglBegin(GL_QUADS)続いて4つの頂点とglEnd()呼び出しを使用します。

于 2010-08-04T12:18:15.467 に答える
0

すべての立方体を黒いポリゴンで描画します(またはカラー出力を無効にします:glColorMask(false、false、false、false);):これにより深度バッファーがいっぱいになります。

次に、線を引きます。ポリゴンで隠されているものは表示されません。ただし、zファイティングが行われるため、glDepthTest(GL_LEQUAL);

「見えない」線を破線で描きたい場合は、これだけでは不十分です。glDepthTest(GL_GREATER);で再度描画できます。

もう1つの解決策は、カメラに面するポリゴンを実線で描画し、他のポリゴンを破線で描画することです。これは単純なドット積(camDir.faceNorm)です。

于 2010-08-04T12:56:04.423 に答える
0

glPolygonOffset() を使用して、ワイヤーフレームを同じ座標のポリゴンの上 (または下) に沈めたり出現させたりします。

于 2010-08-07T17:22:18.820 に答える