0

glutで作業するときは、球体を描画するためにglutsolidsphereを使用していましたが、glfwに移行したため、glusphereを使用する必要がありました。私は基本的に関数「glutsolidsphere」全体を自分のコードにコピーしましたが、以前はなかった奇妙な照明の問題が発生しています。球体のコードは次のとおりです。

球体

void drawSolidSphere(GLdouble radius, GLint slices, GLint stacks)
{
    GLUquadric *shape = gluNewQuadric();
    gluQuadricDrawStyle(shape, GLU_FILL);
    gluQuadricNormals(shape, GLU_SMOOTH);
    gluSphere(shape, radius, slices, stacks);
}

ここで何が問題なのですか?

編集:何らかの理由で、大学から画像をアップロードできないので、説明してみます:球の輪郭はきれいに見えますが、球の外側が透明であるように、内側のセグメントを見ることができます。球体の境界を明確にします。

4

1 に答える 1

1

深度テストに問題があるようです。

glfw からの深度バッファがあると仮定すると、これで修正されますか?

glEnable(GL_DEPTH_TEST);

私は glfw を使用していませんが、深度バッファーを要求するには、たとえば のdepthbits引数に24 を渡すだけでよいようですglfwOpenWindow

まだ追加していない場合は、通話に追加GL_DEPTH_BUFFER_BITする必要もあります。glClear

以前に glut/freeglut を使用して、Windows と Linux 間でデフォルトの GL 状態、特に GL_DEPTH_TEST との不一致を経験しました。

また、gluNewQuadric のメモリリークも参照してください。

于 2013-09-27T11:07:13.880 に答える