2

VC++ 2010 で Windows 7 を使用しています

画面に単純な点を描画しようとしていますが、表示されません。画面が真っ黒になるので、有効な OpenGL コンテキストなどがあることがわかります...

基本的に、私の OpenGL コードは次のようになります (この時点では深度バッファーはありません)。

glClear( GL_COLOR_BUFFER_BIT );

glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective( 45.0, 1018.0 / 743.0, 5.0, 999.0 );
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();

glColor4f( 1, 1, 1, 1 );
glPointSize( 100 );
glBegin( GL_POINTS );
glVertex2i( 0, 0 );
glEnd();

SwapBuffers( hdc );

OpenGL の初期化コードは次のとおりです。

glClearColor( 0, 0, 0, 1 );
glShadeModel( GL_SMOOTH );
glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );

問題は、画面に何も表示されず、画面がクリアされることだけです。

4

2 に答える 2

6

次のチェックリストを確認します(これは、delphigl.com(de_DE)の一般的なopenglチェックリストです。通常、何も表示されない場合に確認する必要があります)。

  • オブジェクトが誤って黒く塗られていませんか?を変更してみてくださいglClearColor
  • 誤ってテクスチャリングを有効にしましたか?で描画する前に無効にしてglDisable(GL_TEXTURE_2D)ください。
  • 次のテストを無効にしてみてください。
    • GL_DEPTH_TEST
    • GL_CULL_FACE
    • GL_ALPHA_TEST
  • glViewport正しく設定されているか確認してください。
  • モデルビューマトリックスをニアクリッピングプレーン(この場合は5.0)から次のように変換してみてくださいglTranslatef(0, 0, -6.0)

いくつかの潜在的な問題があります。gluPerspective主な問題は、プロジェクションをどのように使用するかです。gluPerspectiveは透視ビュー用であるため、ビュー座標の(0、0、0)には何も表示されません。セットアップでは、ビュー座標(クリッピング平面の近く)で(0、0、5)の前に何かを表示することを禁止します。ポイントを設定してglVertex3f(0., 0., 10.)、もう一度お試しください。もう1つの解決策はglTranslatef、ビュー座標を5単位以上移動するために使用することです。

また、一般的な実装はポイントサイズ64に制限されているため、glPointSizeおそらく値を受け入れません。100

OpenGLを使い始めるには、Nehesチ​​ュートリアルも読むことをお勧めします。それらは最先端ではないかもしれませんが、あなたが今直面しているものは何でもカバーします。

于 2012-08-23T09:25:18.450 に答える
0

問題は、glDepthRange が実際に何をしたかを誤解して呼び出していたため、次のように呼び出していたためですglDepthRange( nearPlane, farPlane )。(これは 5.0f と 999.0f でした) この呼び出しを削除すると、すべてが正しく描画されました。ご助力ありがとうございます。:)

于 2012-08-24T11:25:00.690 に答える