1

表示プロジェクションの設定に問題があります。頂点が (0, 0, 0) (0, 0, 1) (0, 1, 1) (0, 1, 0) (1, 0, 0) (1, 1, 0) の立方体を描いています(1, 1, 1) および (1, 0, 1)。これは私がビューを初期化する方法です:

void initGL(int x,int y, int w, int h)
{
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH );
    glutInitWindowPosition( x, y );
    glutInitWindowSize( w, h );
    glutCreateWindow( "CSE328 Project 1" );

    glutDisplayFunc(draw);
    glFrontFace(GL_FRONT_AND_BACK);
    glMatrixMode(GL_PROJECTION);
    glFrustum(-10.0, 10.0, -10.0, 10.0, 2.0, 40.0);
    glMatrixMode(GL_MODELVIEW);
    gluLookAt(10, 10, 10, 0.5, 0.5, 0, 0, 1.0, 0);
    glutMainLoop();
}

何らかの理由で、立方体が画面全体を埋め尽くしています。frustum メソッドと lookAt メソッドの値を変更しようとしましたが、立方体がまったく表示されないか、ビューポート全体に表示されます。glLookAt では、「目」が (10, 10, 10) に配置され、立方体の表面にあるポイント (0.5, 0.5, 0) を見ていると仮定します。立方体全体が見えるように、これで十分な距離が得られると思いました。私はこれについて間違った方法で考えていますか?また、立方体を z 方向に移動して、z = 10 から z = 11 になるようにし、クリッピング プレーンにも移動しようとしましたが、同様の結果が得られます。

4

2 に答える 2

0

の最初の 3 つのパラメータを変更して、目の位置を立方体から遠ざけると、立方体がgluLookAt()小さくなります。

glFrustum()への呼び出しを への呼び出しに置き換えることもできますgluPerspective()。これにより、透視投影を好みに合わせて簡単に構成できます。

于 2012-05-09T00:31:38.283 に答える
0

立方体の長さは 1 で、ビュー ボリュームは x および y 次元で 20 単位に及びます。立方体は、正投影でも中央でいくつかのピクセルを占有します。描画中に他の変換が適用されない限り。

錐台を小さくして (例: +/- 2.0f)、カメラを近づけることをお勧めします。(4.0f, 4.0f, 4.0f).

于 2012-05-06T06:13:38.200 に答える