QOpenGLPaintDevice Class

QOpenGLPaintDevice クラスは、QPainter を使って OpenGL コンテキストへのペイントを可能にします。詳細...

Header: #include <QOpenGLPaintDevice>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake: QT += opengl
Inherits: QPaintDevice

パブリック関数

QOpenGLPaintDevice()
QOpenGLPaintDevice(const QSize &size)
QOpenGLPaintDevice(int width, int height)
virtual ~QOpenGLPaintDevice()
QOpenGLContext *context() const
qreal dotsPerMeterX() const
qreal dotsPerMeterY() const
virtual void ensureActiveTarget()
bool paintFlipped() const
void setDevicePixelRatio(qreal devicePixelRatio)
void setDotsPerMeterX(qreal dpmx)
void setDotsPerMeterY(qreal dpmy)
void setPaintFlipped(bool flipped)
void setSize(const QSize &size)
QSize size() const

再実装パブリック関数

virtual QPaintEngine *paintEngine() const override

再実装された保護された関数

virtual int metric(QPaintDevice::PaintDeviceMetric metric) const override

詳細説明

QOpenGLPaintDevice は、現在のQOpenGL コンテキストを使用してQPainter 描画コマンドをレンダリングします。コンテキストは構築時にキャプチャされます。OpenGL (ES) 2.0以上のサポートが必要です。

パフォーマンス

QOpenGLPaintDevice は、ほとんどの場合ハードウェアアクセラレーションを使用し、ソフトウェアラスタライズよりもはるかに高速になる可能性があります。ただし、状態の変化に対してより敏感であるため、最適なパフォーマンスを得るには描画コマンドを慎重に順序付ける必要があります。

アンチエイリアシングと品質

OpenGLペイントエンジンのアンチエイリアシングは、マルチサンプリングを使って行われます。ほとんどのハードウェアは、マルチサンプリングを行うためにかなり多くのメモリを必要とし、結果として得られる品質はソフトウェアペイントエンジンの品質と同等ではありません。OpenGLペイントエンジンの強みは、そのパフォーマンスであり、ビジュアルレンダリングの品質ではありません。

状態の変化

QPainter を使用して QOpenGLPaintDevice にペイントするとき、現在の OpenGL コンテキストの状態は、ペイントエンジンのニーズを反映するために変更されます。特に、現在のシェーダプログラム、OpenGLビューポート、テクスチャユニット、描画モードなどです。

QPainterとOpenGLの混合

QPainter と OpenGL を混在させるときは、QPainter に OpenGL の状態が乱れたかもしれないことを通知して、内部状態を復元できるようにすることが重要です。これは、OpenGLレンダリングを開始する前にQPainter::beginNativePainting ()を呼び出し、終了後にQPainter::endNativePainting ()を呼び出すことで達成される。

OpenGLウィンドウの例も参照

メンバ関数ドキュメント

QOpenGLPaintDevice::QOpenGLPaintDevice()

QOpenGLPaintDevice を構築します。

QOpenGLPaintDeviceは現在のコンテキストでのみ有効です。

QOpenGLContext::currentContext()も参照してください

[explicit] QOpenGLPaintDevice::QOpenGLPaintDevice(const QSize &size)

与えられたsize で QOpenGLPaintDevice を構築します。

QOpenGLPaintDevice は現在のコンテキストでのみ有効です。

QOpenGLContext::currentContext()も参照してください

QOpenGLPaintDevice::QOpenGLPaintDevice(int width, int height)

与えられたwidthheight で QOpenGLPaintDevice を構築します。

QOpenGLPaintDevice は現在のコンテキストでのみ有効です。

QOpenGLContext::currentContext()も参照してください

[virtual noexcept] QOpenGLPaintDevice::~QOpenGLPaintDevice()

QOpenGLPaintDevice を破棄します。

QOpenGLContext *QOpenGLPaintDevice::context() const

ペイントデバイスに関連付けられている OpenGL コンテキストを返します。

qreal QOpenGLPaintDevice::dotsPerMeterX() const

水平1メートルあたりのピクセル数を返します。

setDotsPerMeterX()も参照

qreal QOpenGLPaintDevice::dotsPerMeterY() const

垂直方向の1メートルあたりのピクセル数を返します。

setDotsPerMeterY() も参照

[virtual] void QOpenGLPaintDevice::ensureActiveTarget()

この仮想メソッドは、異なるQOpenGLPaintDevice インスタンスが交互に描画コールを発行している場合に、ターゲットフレームバッファオブジェクトまたはコンテキストを再バインドできるようにするためのコールバックとして提供されます。

beginNativePainting() もこのメソッドを起動します。

デフォルトの実装は何もしません。

[override virtual protected] int QOpenGLPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const

再実装:QPaintDevice::metric(QPaintDevice::PaintDeviceMetric metric) const.

[override virtual] QPaintEngine *QOpenGLPaintDevice::paintEngine() const

再インプリメント:QPaintDevice::paintEngine() const.

bool QOpenGLPaintDevice::paintFlipped() const

ペイントが Y 軸を中心に反転している場合にtrue を返します。

setPaintFlipped()も参照してください

void QOpenGLPaintDevice::setDevicePixelRatio(qreal devicePixelRatio)

ペイントデバイスのデバイスピクセル比をdevicePixelRatio に設定します。

void QOpenGLPaintDevice::setDotsPerMeterX(qreal dpmx)

水平1メートルあたりのピクセル数をdpmx に設定します。

dotsPerMeterX() も参照して ください。

void QOpenGLPaintDevice::setDotsPerMeterY(qreal dpmy)

垂直方向のピクセル数をdpmy に設定します。

dotsPerMeterY() も参照

void QOpenGLPaintDevice::setPaintFlipped(bool flipped)

ペイントをY軸周りに反転させるかどうかをflipped に設定します。

paintFlipped() も参照

void QOpenGLPaintDevice::setSize(const QSize &size)

ペイントデバイスのピクセルサイズをsize に設定します。

size() も参照

QSize QOpenGLPaintDevice::size() const

ペイント・デバイスのピクセル・サイズを返します。

setSize() も参照して ください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。