質問

私が理解しているように、初期のQtバージョンにはモジュールはなく、グラフィカルを含むさまざまな機能を持つ別々のクラスがありました。Openglのサポートはqt1.2で実現されました。ただし、QPainter、QImageは初期のバージョンに存在していました。だから、これらのクラスはネイティブであると言うのは正しいですか(言い換えれば、原始的なクラス);openglのクラス-非ネイティブ(それはすべての後に、separsteブランチです)?私は2Dグラフィックスih Qtを作成するための非ネイティブおよび代替方法としてのQtopenglのさらなる進化、ネイティブメソッドの進化(2Dグラ

役に立ちましたか?

解決

それで、これらのクラスがネイティブであると言うのは正しいですか?

いいえ、そうではありません。

その理由は、「ネイティブ」とは、人によって異なることを意味するからです。それは解釈の問題です。私たちがどのように混乱したかあなたの他の質問を見てください。

今では、ネイティブによる「非opengl」2/3Dを意味すると思います。これはおそらく、ディスプレイドライバを直接通過するのではなく、ソフトウェアのラスタライズを意味します。したがって、まだQtレベルですが、Qtのopenglクラスはありません。

さて、これがQImageとQPainterに戻ることができるポイントです。はい、QPainterは基本的に、Gpuが最近ほど一般的で安価ではなかった時代のソフトウェアラスタライズの初期世代です。

彼らは基本的に純粋にソフトウェア技術でレンダリングを行っています。つまり、それはより限られていますが、それは周りのより高価であまり一般的ではないハードウェアなしで働いていました。

(それらはQuakeや他のソフトウェア製品の時代であり、今日の視点からそれを見て楽しい時代でした。..)

他のヒント

「ネイティブ」で「ハードウェア支援」を意味する場合、その行はもうそれほど明確ではありません。に注意してください。 QPainter 塗装を行うために様々な塗料エンジンを使用することができますので、単に使用して QPainter それだけでは何も意味しません。

"ハードウェア支援"によって、単にcpuの従来の整数または浮動小数点実行単位以上のものを使用することを意味する場合、raster paint engineは利用可能な場合には様々なSIMD/ベクトル操作を使用します。ラスターペイントエンジンは、ペイントに使用されるエンジンです QImage, QPixmap および非GL QWidget.

「ハードウェア支援」によって「グラフィックカードのハードウェアによってレンダリングされる」ことを意味する場合は、OpenGLペイントエンジンを使用する必要があります。それはあなたが上にペイントするときに使用されます QGLWidget またはaで QQuickPaintedItem.もちろん、絵はまだソフトウェアによって定義されています-ジオメトリセットアップとシェーダーは単なるコードです!このソフトウェアは、汎用Cpuよりもはるかに高速に実行できるハードウェア上で実行されます。

固定関数OpenGLパイプラインは、最近の歴史的な成果物であることを考えると、それを述べるのは間違っていません すべて Qtでのレンダリングは純粋にソフトウェア技術を使用して行われますが、ソフトウェアは汎用CPU上で実行することも、汎用CPU上でSIMD/vector実行ユニットを活用することも、GPU上で実行することもできます。

また、これらの日の典型的なWindowsドライバが行うことを言わなければなりません ない blits以外のGDI/gdiplus描画を加速します。したがって、ラスターエンジンを使用して2D描画を行う場合、特にXPのような古いWindowsバージョンでは、Qtはプラットフォームネイティブの2D描画よりも高速になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top