QTクリエーターにopenGLを組み合わせたい
なんで?Qt は GLUT が行うことすべてに加えて、さらに多くのことを行います。すでに Qt を使用している場合、GLUT は必要ありません。何を求めても意味がありません。
コメントがあったので更新
まず第一に: QGLWidget は GLUT が行うすべてのことを行い、さらにそれ以上のことを行います。基本的な考え方は、QGLWidget からカスタム Widget クラスを派生させ、いくつかの仮想関数をオーバーライドすることです。paintGLは通常 als GLUT 表示関数を登録するものです。resizeGLとinitializeGLもあります。
ウィンドウが変更された後に一部のリソースを再初期化する必要がある場合にのみ、サイズ変更が必要です。たとえば、後処理の FBO テクスチャ アタッチメントなどです。しないでください、glViewportや投影設定などをそこに置かないでください。それはそこに属していません。表示機能に属します。
テクスチャやその他の 1 回限りのものをロードするには、initializeGL を使用する必要があります。glEnable(GL_DEPTH_TEST)そこなどに電話しないでください。これも表示機能に属します。
したがって、基本的な要点は次のようになります
class MyGLWidget : public QGLWidget
{
Q_OBJECT
public:
MyGLWidget(QGLWidget *parent):
QGLWidget(parent)
{}
protected:
virtual void paintGL();
virtual void resizeGL();
virtual void initializeGL();
}
glutSwapBuffers の代わりに、表示関数の最後で QGLWidget::swapBuffers を呼び出します。