0

上にを付けて描くgluCylindergluDisk。カリングを有効にしないと、ふた効果のある目的の円柱が得られます。ただし、カリングを有効にすると、ディスク(別名リッド)が消えます。 何故ですか? これが主な質問です。さらに、カリングを有効にすると、円柱の背面も描画されません。なぜこれが起こっているのかわかりますが、それでもシリンダーの内側が描かれているのを見たいです。コードは次のとおりです。

    glPushMatrix()
    quadratic = gluNewQuadric()
    gluQuadricNormals(quadratic, GLU_SMOOTH)
    gluQuadricTexture(quadratic, GL_TRUE)
    glRotatef(90, 1, 0, 0)
    glTranslate(0, 0, -3*sz)
    gluCylinder(quadratic, 0.75*sz, 0.75*sz, 3.0*sz, 32, 32)
    gluDisk(quadratic, 0.0, 0.75*sz, 32, 32)
    glPopMatrix()
4

2 に答える 2

4

ディスクが間違った方向を向いています(間違った巻き方)。したがって、淘汰されます。を使用して向きを逆にすることができますgluQuadricOrientation。これでうまくいくはずです。詳細については、gluDiskおよびglCullFaceのOpenGL仕様を参照してください。

于 2012-07-11T09:53:21.203 に答える
2

ディスクは、厚みのない単なる平面です。つまり、片側が前面に、もう一方が背面にあり、カリングを有効にすると、そのうちの1つがカリングされます。あなたはたぶん、カリングされた側を見ているだけです。これが見たい側でない場合は、ディスクを回転させてください。それに夢中になるものはありません。したがって、次のようにラップします。

glPushMatrix();
glRotatef(180.0f, 0.0f, 1.0f, 0.0f);
gluDisk(quadratic, 0.0, 0.75*sz, 32, 32);
glPopMatrix();

または、kronemlが示唆するように、三角形の向きを変更します。あなたの状況でどちらがより概念的に正しいかを自分で決めてください。

于 2012-07-11T09:57:16.050 に答える