現在、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()