0

Qt Creator で OpenGL と glut を組み合わせたい。QT のバージョンは 4.7.4、32 ビットです。

私はチュートリアルに従いました:

http://www.youtube.com/watch?v=1nzHSkY4K18

私は他の人々の質問もチェックしましたが、彼らは私に答えをくれませんでした.

glutを含める前の部分は正常に機能します。しかし、glutを含めようとするとうまくいきません。エラーは次のとおりです。

glutInit_ATEXIT_HACK への未定義の参照

そして、glutfunctionsへの未定義の参照。

glut-libraries とヘッダーを Minwg フォルダー内の適切なフォルダーにコピーしました。しかし、これが正しいフォルダかどうかはわかりませんでした。

Qt 用の glut と OpenGL の特別なライブラリを取得する必要がありますか? どこに配置すればよいですか?

4

2 に答える 2

3

QTクリエーターにopenGLを組み合わせたい

なんで?Qt は GLUT が行うことすべてに加えて、さらに多くのことを行います。すでに Qt を使用している場合、GLUT は必要ありません。何を求めても意味がありません。

コメントがあったので更新

まず第一に: QGLWidget は GLUT が行うすべてのことを行い、さらにそれ以上のことを行います。基本的な考え方は、QGLWidget からカスタム Widget クラスを派生させ、いくつかの仮想関数をオーバーライドすることです。paintGLは通常 als GLUT 表示関数を登録するものです。resizeGLinitializeGLもあります。

ウィンドウが変更された後に一部のリソースを再初期化する必要がある場合にのみ、サイズ変更が必要です。たとえば、後処理の 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 を呼び出します。

于 2013-02-15T17:26:46.387 に答える
1

QT 用に glut と openGL の特別なライブラリを取得する必要がありますか? どこに配置すればよいですか?

いいえ。ただし、OpenGL と (オプションで Glut) は、インクルード パスとライブラリ パスに配置できる必要があります。このエラーは、インクルード パスにないか、インクルードしていないことを示しています。

私は2番目のダテンウルフです。Qt と Glut の両方は必要ありません。ヘルパー関数 (gluLookAt、gluQuadrics) に glut のみを使用している場合は、簡単に複製するか、Google で検索するだけで済みます。

于 2013-02-15T21:21:16.520 に答える