2

私は GLUT を使用して OpenGL を操作しています (できれば SDL で機能します)。そして、球を描く必要があります。私は使用してgluSphereいますが、単に何も描画しません。

これが私のGLUTの初期化です:

// Initializes display
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(600, 600);

// Window settings
glutCreateWindow("Collision detect");
glClearColor(0.0, 0.0, 0.0, 1.0);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glEnable(GL_TEXTURE_2D);

二次初期化:

quadratic = gluNewQuadric();
if( !quadratic){
    throw new PROGRAM_EXCEPTION( "Cannot initialize quadartic", NULL);
}
gluQuadricNormals(quadratic, GLU_SMOOTH);
//gluQuadricDrawStyle( quadratic, GLU_FILL);
gluQuadricTexture(quadratic, GL_TRUE); // Tried both GL_TRUE and GL_FALSE

そして私の描画機能:

glPushMatrix();
glTranslatef( position.getX(), position.getY(), position.getZ());
// This commented piece of code draws dot where I want it to,
// so coordinates and camera position are just fine
//  glBegin(GL_POINTS);
//  glVertex3f( 0,0,0);
//  glEnd();
gluSphere( quadratic, 20.0f, 32, 32); // Tried r = 0.02f, 0.2f, 2.0f, 20.0f, none works
glPopMatrix();

質問:何が欠けていますか? 二次関数を描画できるようにするためのトリックはありますか? 私の設定の一部と互換性がありませんか?

これを整理するために数時間を費やし、さまざまなことを試しました...他のコードが必要な場合は、どれを言ってください...ここに2000行を貼り付けたくありません。もう1つ、私はトリプルチェックを行いました.内部glBegin()では使用していませんglEnd(). スペースを囲む三角形はほとんどなく、うまく描画できます。

4

3 に答える 3

0

問題は、ボールの描画(Spritと呼ばれる)を処理するクラスがあり、コンストラクターで2次式を作成し(コピーコンストラクターも独自の2次式を作成)、デストラクタで2次式を削除したことです。コピーコンストラクターを注意深く作成しましたが、代入演算子を作成するのを忘れ、削除された2次式を使用しました。glGetError()を使用して、すべてが正常であることを確認しました。エラーは報告されなかったため、GLUTの問題であると想定しました。

于 2012-01-22T14:44:52.417 に答える
0

質問: 何が欠けていますか?

ビューポートとプロジェクションの設定はどうですか?

于 2012-01-22T14:28:12.520 に答える
-1

このガイドを使用してくださいhttp://www.mediafire.com/?x6h3hz6hn1wqq73

第2章では、主にあなたが探しているものすべてをカバーしています。また、使用している言語とテクノロジーのスタックも扱います。

于 2012-01-23T16:36:29.663 に答える