2011-11-15 10 views
2

私はQtでOpenGLを試しています。私はQtのドキュメントから2dpainting exampleをコンパイルしました。この例では、2つのアニメーションが並べてあり、1つはネイティブに実行され、もう1つはOpenGLによってレンダリングされます。私は違いは見えません。ハードウェアアクセラレータが使用されていることを確認する方法を教えてください。私はこの例をÅngströmLinuxの組み込みデバイスで実行しています。レンダリングコンテキストはいつQtでopenglで作成されますか?

OpenGLウィジェットのコンストラクタに行を追加して、使用するレンダラを決定しましたが、関数は常にNULLポインタを返します。

ここでは、有効なレンダリングコンテキストが必要な多数のオンラインフォーラムを読んでいます。しかし、これはどういう意味ですか、いつQtを使う時に作られますか?私は、GLWidgetの他のすべての機能に同じ機能を追加しようとしましたが、運が全くありませんでした。

+0

ビデオドライバはどのようなハードウェアをサポートしていますか? – neagoegab

+0

@neagoegab:[Texas Instrument DM3730](http://www.ti.com/product/dm3730?DCMP=D%252520DSPS%252520DSPS&CMP=KNC-GoogleTI&247SEM)実際には、OpenGLES 1.1および2.0、OpenVG1.0 Qtのサンプルはコンパイルされ、問題なく実行されました。だから私は何が起こっているのか調べようとしている。 – Lucas

答えて

1

OpenGLのシーンがQGlWidget paintGL機能でレンダリングされ、あなたは一般的に、独自のpaintGL機能をQGlWidgetから派生する必要が

訥河チュートリアルは、私はそれができるだけ遅く初期化されると信じてadapted for Qt

2

されていますつまり、実際に何かを描く必要があるときです。 QGLWidget::paintEvent()ドキュメントから

は、イベントパラメータで渡されたペイントイベントを処理します。仮想paintGL()関数が呼び出されます。
ウィジェットのレンダリングコンテキストは現在のコンテキストになり、まだと呼ばれていない場合はinitializeGL()が呼び出されます。

+0

paintEvent()が呼び出された後にレンダリングコンテキストが破棄されるということですか? – Lucas

+0

必ずしもそうではありません。しかし、何かを描く必要があるときに初めて完全に初期化されます。オーバーライドするはずの 'paintGL'仮想で常に利用できるはずです。 – Mat

関連する問題