1

現在、Qt と OpenGl を使用して小さなアプリケーションを作成しており、QOpenGLWidgetグラフィックスのレンダリングに選択しました。

それが私のウィジェットを宣言した方法です:

class GLWidget : public QOpenGLWidget, protected QOpenGLFunctions{
     // Methods, slots, e.t.c
}

そして、それがコンストラクタです:

GLWidget::GLWidget(QWidget *parent) : QOpenGLWidget(parent)
{
    /* Tried this, it didn't help.
    QSurfaceFormat format;
    format.setDepthBufferSize(24);
    this->setFormat(format);
    */
}

私のinit関数では、次のように設定GL_CULL_FACEしましたGL_DEPTH_TEST

void GLWidget::initializeGL()
{
    /* Some initialization stuff regarding the scene */

    glEnable(GL_CULL_FACE);
    glEnable(GL_DEPTH_TEST);
    glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

}

そして、ウィジェットが黒い画面をレンダリングする理由が本当にわかりません。ここにいくつかの写真があります。最初のもの: disabledGL_CULL_FACEと disabled を使用GL_DEPTH_TESTここに画像の説明を入力

2 つ目: enabledGL_CULL_FACEと disabled を使用GL_DEPTH_TEST。良い写真ではないかもしれませんが、いくつかの面が透けて見えることは間違いありません。 ここに画像の説明を入力

3 つ目: enabledGL_CULL_FACEと enabled を使用GL_DEPTH_TEST。実際には、有効になっているかどうかは問題ではありませんGL_CULL_FACE。とにかく、黒い画面をレンダリングします。 ここに画像の説明を入力

モデルに問題がないことを示すために、陰影を付けていない画像を次に示します。 ここに画像の説明を入力

フォーマットを手動で設定しようとしましたが、役に立ちませんでした。まだ黒い画面:

QSurfaceFormat format;
format.setDepthBufferSize(24);
this->setFormat(format);

ああ、はい、関数glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);の最初に設定しました。paintGL()

4

0 に答える 0