QOpenGLFramebufferObject Class

QOpenGLFramebufferObjectクラスは、OpenGLフレームバッファオブジェクトをカプセル化します。さらに...

ヘッダー #include <QOpenGLFramebufferObject>
CMake: find_package(Qt6 REQUIRED COMPONENTS OpenGL)
target_link_libraries(mytarget PRIVATE Qt6::OpenGL)
qmake: QT += opengl

パブリックタイプ

enum Attachment { NoAttachment, CombinedDepthStencil, Depth }
enum FramebufferRestorePolicy { DontRestoreFramebufferBinding, RestoreFramebufferBindingToDefault, RestoreFrameBufferBinding }

パブリック関数

QOpenGLFramebufferObject(const QSize &size, GLenum target = GL_TEXTURE_2D)
QOpenGLFramebufferObject(const QSize &size, const QOpenGLFramebufferObjectFormat &format)
QOpenGLFramebufferObject(int width, int height, GLenum target = GL_TEXTURE_2D)
QOpenGLFramebufferObject(int width, int height, const QOpenGLFramebufferObjectFormat &format)
QOpenGLFramebufferObject(const QSize &size, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internalFormat = 0)
QOpenGLFramebufferObject(int width, int height, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internalFormat = 0)
virtual ~QOpenGLFramebufferObject()
void addColorAttachment(const QSize &size, GLenum internalFormat = 0)
void addColorAttachment(int width, int height, GLenum internalFormat = 0)
QOpenGLFramebufferObject::Attachment attachment() const
bool bind()
QOpenGLFramebufferObjectFormat format() const
GLuint handle() const
int height() const
bool isBound() const
bool isValid() const
bool release()
void setAttachment(QOpenGLFramebufferObject::Attachment attachment)
QSize size() const
QList<QSize> sizes() const
GLuint takeTexture()
GLuint takeTexture(int colorAttachmentIndex)
GLuint texture() const
QList<GLuint> textures() const
QImage toImage(bool flipped = true) const
QImage toImage(bool flipped, int colorAttachmentIndex) const
int width() const

静的パブリックメンバー

bool bindDefault()
void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers, GLenum filter, int readColorAttachmentIndex, int drawColorAttachmentIndex, QOpenGLFramebufferObject::FramebufferRestorePolicy restorePolicy)
void blitFramebuffer(QOpenGLFramebufferObject *target, QOpenGLFramebufferObject *source, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST)
void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST)
void blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers, GLenum filter, int readColorAttachmentIndex, int drawColorAttachmentIndex)
bool hasOpenGLFramebufferBlit()
bool hasOpenGLFramebufferObjects()

詳細な説明

QOpenGLFramebufferObjectクラスは、GL_EXT_framebuffer_object 拡張によって定義されたOpenGLフレームバッファオブジェクトをカプセル化します。これは、QOpenGLPaintDevice の助けを借りて、QPainter でペイントしたり、ネイティブのOpenGLコールを使ってレンダリングしたりできるレンダリングサーフェスを提供します。このサーフェスはバインドすることができ、独自のOpenGL描画コードで通常のテクスチャとして使用できます。デフォルトでは、QOpenGLFramebufferObjectクラスは(GL_TEXTURE_2D ターゲットを使用して)2D OpenGLテクスチャを生成し、これが内部レンダリングターゲットとして使用されます。

QOpenGLFramebufferObjectを作成するときに、現在のOpenGLコンテキストを持っていることが重要で、そうでないと初期化に失敗します。

QPainter を正しくレンダリングしたい場合は、QOpenGLFrameBufferObject インスタンスをCombinedDepthStencil 添付で作成してください。QPainter を使用して描画するときにプリミティブにアンチエイリアスをかけるには、ピクセルごとに 1 つ以上のサンプルを持つ QOpenGLFramebufferObject を作成する必要があることに注意してください。マルチサンプルフレームバッファオブジェクトを作成するには、QOpenGLFramebufferObjectFormat パラメータを取るコンストラクタの 1 つを使用し、QOpenGLFramebufferObjectFormat::samples() プロパティを 0 以外の値に設定する必要があります。

マルチサンプルフレームバッファオブジェクトの場合、カラーレンダーバッファが作成され、そうでない場合は、指定されたテクスチャターゲットを持つテクスチャが作成されます。カラーレンダーバッファまたはテクスチャは、指定された内部フォーマットを持ち、フレームバッファオブジェクトのGL_COLOR_ATTACHMENT0 アタッチメントにバインドされます。

OpenGLの実装がサポートしている場合は、複数のレンダーターゲットもサポートされます。ここでは、複数のテクスチャ(マルチサンプリングの場合はレンダーバッファ)が存在し、それぞれがGL_COLOR_ATTACHMENT012 、...にアタッチされます。

マルチサンプリングが有効になっているフレームバッファオブジェクトをテクスチャとして使いたい場合は、まず QOpenGLContext::blitFramebuffer() を使って、フレームバッファオブジェクトから通常のフレームバッファオブジェクトにコピーする必要があります。

別スレッドでQPainterQOpenGLPaintDevice を使って QOpenGLFramebufferObject に描画することも可能です。

メンバ型ドキュメント

enum QOpenGLFramebufferObject::Attachment

この列挙型は、フレームバッファオブジェクトが生成されるときに、フレームバッファオブジェクトにアタッチされるデプスバッファとステンシルバッファを設定するために使用される。

定数説明
QOpenGLFramebufferObject::NoAttachment0アタッチメントはフレームバッファオブジェクトに追加されません。深度バッファやステンシルバッファのないフレームバッファオブジェクトにレンダリングする場合、OpenGLの深度テストやステンシルテストは動作しないことに注意してください。これはデフォルト値です。
QOpenGLFramebufferObject::CombinedDepthStencil1GL_EXT_packed_depth_stencil 拡張が存在する場合、深度とステンシルバッファが結合されます。エクステンションが存在しない場合は、深度バッファのみがアタッチされます。
QOpenGLFramebufferObject::Depth2深度バッファはフレームバッファオブジェクトにアタッチされます。

attachment()も参照

enum QOpenGLFramebufferObject::FramebufferRestorePolicy

この列挙型は、blitFramebuffer ()を呼び出したときのフレームバッファバインディングの復元に関する動作を設定するために使用される。

定数説明
QOpenGLFramebufferObject::DontRestoreFramebufferBinding0以前のフレームバッファバインディングを復元しません。呼び出し側は、必要に応じてフレームバッファバインディングを追跡し、設定する責任があります。
QOpenGLFramebufferObject::RestoreFramebufferBindingToDefault1ブリット操作の後、デフォルトのフレームバッファをバインドします。
QOpenGLFramebufferObject::RestoreFrameBufferBinding2以前にバインドされたフレームバッファを復元します。これは、現在バインドされているフレームバッファを問い合わせる必要があるため、コストがかかる可能性があります。

blitFramebuffer()も参照

メンバ関数ドキュメント

[explicit] QOpenGLFramebufferObject::QOpenGLFramebufferObject(const QSize &size, GLenum target = GL_TEXTURE_2D)

OpenGLフレームバッファオブジェクトを構築し、2D OpenGLテクスチャをサイズsize のバッファにバインドします。テクスチャはフレームバッファオブジェクトのGL_COLOR_ATTACHMENT0 ターゲットにバインドされます。

OpenGLテクスチャターゲットを指定するには、target パラメータを使用します。デフォルトのターゲットはGL_TEXTURE_2D です。GL_TEXTURE_2D テクスチャは、OpenGL 2.0以上を使用していない限り、幅と高さが2のべき乗(たとえば256x512)でなければならないことに注意してください。

デフォルトでは、深度バッファとステンシルバッファはアタッチされません。この動作は、オーバーロードされたコンストラクタの1つを使用して切り替えることができます。

デフォルトの内部テクスチャフォーマットは、デスクトップOpenGLではGL_RGBA8 、OpenGL/ESではGL_RGBA

QOpenGLFramebufferObjectを作成するときに、現在のOpenGLコンテキストが設定されていることが重要です。

size(),texture(),attachment()も参照してください

QOpenGLFramebufferObject::QOpenGLFramebufferObject(const QSize &size, const QOpenGLFramebufferObjectFormat &format)

与えられたformat に基づいて、与えられたsize の OpenGL フレームバッファオブジェクトを構築する。

QOpenGLFramebufferObject::QOpenGLFramebufferObject(int width, int height, GLenum target = GL_TEXTURE_2D)

OpenGLフレームバッファオブジェクトを構築し、与えられたwidthheight のバッファに2D OpenGLテクスチャをバインドする。

size() およびtexture()も参照してください

QOpenGLFramebufferObject::QOpenGLFramebufferObject(int width, int height, const QOpenGLFramebufferObjectFormat &format)

与えられたformat に基づいて、与えられたwidthheight の OpenGL フレームバッファオブジェクトを構築する。

QOpenGLFramebufferObject::QOpenGLFramebufferObject(const QSize &size, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internalFormat = 0)

OpenGLフレームバッファオブジェクトを構築し、与えられたsize のバッファにテクスチャをバインドします。

attachment パラメータは深度/ステンシルバッファ構成を記述し、target はテクスチャターゲット、internalFormat は内部テクスチャフォーマットを記述します。デフォルトのテクスチャターゲットはGL_TEXTURE_2D であり、デフォルトの内部フォーマットはデスクトップ OpenGL ではGL_RGBA8 であり、OpenGL/ES ではGL_RGBA です。

size()、texture()、attachment()も参照してください

QOpenGLFramebufferObject::QOpenGLFramebufferObject(int width, int height, QOpenGLFramebufferObject::Attachment attachment, GLenum target = GL_TEXTURE_2D, GLenum internalFormat = 0)

OpenGL フレームバッファオブジェクトを構築し、与えられたwidthheight のバッファにテクスチャをバインドします。

attachment パラメーターは深度/ステンシル・バッファーの構成を記述し、target はテクスチャー・ターゲット、internalFormat は内部テクスチャー・フォーマットを記述します。デフォルトのテクスチャターゲットはGL_TEXTURE_2D で、デフォルトの内部フォーマットはデスクトップ OpenGL ではGL_RGBA8 で、OpenGL/ES ではGL_RGBA です。

size()、texture()、attachment()も参照してください

[virtual noexcept] QOpenGLFramebufferObject::~QOpenGLFramebufferObject()

フレームバッファオブジェクトを破棄し、割り当てられたリソースを解放する。

void QOpenGLFramebufferObject::addColorAttachment(const QSize &size, GLenum internalFormat = 0)

size の幅と高さの追加のテクスチャまたはレンダーバッファを作成し、アタッチします。

常にGL_COLOR_ATTACHMENT0にアタッチメントがある。GL_COLOR_ATTACHMENT1、GL_COLOR_ATTACHMENT2、...に追加のアタッチメントを設定するには、この関数を呼び出します。

internalFormat0 でない場合、テクスチャまたはレンダーバッファの内部フォーマットを指定する。そうでない場合は、デフォルトのGL_RGBAまたはGL_RGBA8が使用される。

注意: これは、OpenGL実装で複数のレンダーターゲットがサポートされている場合にのみ機能する。そうでない場合、この関数は追加のカラーアタッチメントを追加しません。MRT がサポートされているかどうかを確認するには、実行時にQOpenGLFunctions::MultipleRenderTargets を指定してQOpenGLFunctions::hasOpenGLFeature() を呼び出します。

注意 : カラーアタッチメントの内部フォーマットは異なるかもしれませんが、ドライバによってはサポートされる組み合わせに制限があるかもしれません。

注意: カラーアタッチメントのサイズは異なる場合がありますが、OpenGLの仕様により、レンダリングはすべてのアタッチメントが収まる領域に制限されます。ただし、ドライバによってはこの点に完全に準拠していない場合があります。

void QOpenGLFramebufferObject::addColorAttachment(int width, int height, GLenum internalFormat = 0)

これはオーバーロードされた関数です。

サイズwidth およびheight の追加テクスチャまたはレンダーバッファを作成し、アタッチします。

internalFormat0 でない場合、テクスチャまたはレンダーバッファの内部フォーマットを指定します。そうでない場合は、デフォルトの GL_RGBA または GL_RGBA8 が使用されます。

QOpenGLFramebufferObject::Attachment QOpenGLFramebufferObject::attachment() const

このフレームバッファオブジェクトにアタッチされている深度バッファとステンシルバッファのステータスを返します。

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

bool QOpenGLFramebufferObject::bind()

ウィンドウシステムが提供するデフォルトのフレームバッファから、このフレームバッファオブジェクトにレンダリングを切り替えます。成功するとtrue を返し、失敗すると false を返します。

Note: takeTexture() が呼ばれた場合、新しいテクスチャが作成され、フレームバッファオブジェクトに関連付けられます。これは、潜在的に高価であり、コンテキストの状態(現在バインドされているテクスチャ)を変更します。

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

[static] bool QOpenGLFramebufferObject::bindDefault()

ウィンドウシステムが提供するデフォルトのフレームバッファにレンダリングを戻します。成功するとtrue を返し、失敗すると false を返します。

bind() およびrelease()も参照

[static] void QOpenGLFramebufferObject::blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers, GLenum filter, int readColorAttachmentIndex, int drawColorAttachmentIndex, QOpenGLFramebufferObject::FramebufferRestorePolicy restorePolicy)

source フレームバッファオブジェクトのsourceRect 矩形から、target フレームバッファオブジェクトのtargetRect 矩形へブリットします。

source またはtarget が 0 の場合、それぞれソースまたはターゲットとしてフレームバッファオブジェクトの代わりにデフォルトのフレームバッファが使用されます。

hasOpenGLFramebufferBlit() が真を返さない限り、この関数は何の効果も持ちません。

buffers パラメータは、GL_COLOR_BUFFER_BITGL_DEPTH_BUFFER_BITGL_STENCIL_BUFFER_BIT の任意の組み合わせからなるマスクでなければならない。ソースバッファとターゲットバッファの両方に存在しないバッファタイプは無視される。

sourceRecttargetRect の矩形は,異なるサイズを持つ可能性があります.この場合,buffers は,GL_DEPTH_BUFFER_BIT またはGL_STENCIL_BUFFER_BIT を含むべきではないでしょう.filter パラメータは,GL_LINEAR またはGL_NEAREST に設定されるべきであり,スケーリングが行われるときに線形補間と最近傍補間のどちらを使用すべきかを指定します.

sourcetarget と等しい場合、同じバッファ内でコピーが実行される。コピー元とコピー先の矩形が重なっていて,サイズが異なる場合,結果は不定です。フレームバッファオブジェクトのいずれかがマルチサンプルフレームバッファの場合、サイズも同じでなければなりません。

Note: シザーテストが有効な場合、ブリット領域が制限されます。

複数のレンダーターゲットが使用されている場合、readColorAttachmentIndexdrawColorAttachmentIndex は、ソースとデスティネーションフレームバッファのカラーアタッチメントのインデックスを指定します。

restorePolicy は、この関数を呼び出す前にバインドされていたフレームバッファが復元されるべきか、デフォルトのフレームバッファが戻る前にバインドされるべきか、呼び出し元がバインドされたフレームバッファを追跡して設定する責任があるかどうかを決定します。以前のフレームバッファを復元することは、glGetIntegerv への呼び出しのために比較的高価になる可能性があり、これはいくつかのOpenGLドライバではパイプラインストールを意味するかもしれません。

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

[static] void QOpenGLFramebufferObject::blitFramebuffer(QOpenGLFramebufferObject *target, QOpenGLFramebufferObject *source, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST)

これはオーバーロードされた関数です。

2つのフレームバッファオブジェクト間でブリットを行うための便利なオーバーロード。

[static] void QOpenGLFramebufferObject::blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers = GL_COLOR_BUFFER_BIT, GLenum filter = GL_NEAREST)

これはオーバーロードされた関数です。

* 2つのフレームバッファオブジェクト間のブリットを行うための便利なオーバーロードです。

[static] void QOpenGLFramebufferObject::blitFramebuffer(QOpenGLFramebufferObject *target, const QRect &targetRect, QOpenGLFramebufferObject *source, const QRect &sourceRect, GLbitfield buffers, GLenum filter, int readColorAttachmentIndex, int drawColorAttachmentIndex)

これはオーバーロードされた関数です。

2つのフレームバッファオブジェクト間でブリットを行い、以前のフレームバッファバインディングを復元するための便利なオーバーロードです。blitFramebuffer(target, targetRect, source, sourceRect, buffers, filter, readColorAttachmentIndex, drawColorAttachmentIndex,RestoreFrameBufferBinding) を呼び出すのと同等です。

QOpenGLFramebufferObjectFormat QOpenGLFramebufferObject::format() const

このフレームバッファオブジェクトのフォーマットを返します。

GLuint QOpenGLFramebufferObject::handle() const

このフレームバッファオブジェクトのOpenGLフレームバッファオブジェクトハンドルを返す(glGenFrameBuffersEXT() 関数によって返される)。このハンドルは、新しいイメージやバッファをフレームバッファにアタッチするために使用することができます。これらのオブジェクトをクリーンアップして破棄するのはユーザーの責任です。

[static] bool QOpenGLFramebufferObject::hasOpenGLFramebufferBlit()

OpenGLGL_EXT_framebuffer_blit 拡張がこのシステムに存在する場合はtrue を返し、そうでない場合はfalse を返す。

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

[static] bool QOpenGLFramebufferObject::hasOpenGLFramebufferObjects()

このシステムにOpenGLGL_EXT_framebuffer_object 拡張が存在する場合はtrue を返し、そうでない場合はfalse を返す。

int QOpenGLFramebufferObject::height() const

フレームバッファオブジェクトのアタッチメントの高さを返します。

bool QOpenGLFramebufferObject::isBound() const

フレームバッファオブジェクトが現在のコンテキストに現在バインドされている場合はtrue 、そうでない場合はfalseを返す。

bool QOpenGLFramebufferObject::isValid() const

フレームバッファオブジェクトが有効な場合、true を返します。

フレームバッファは、初期化プロセスが失敗した場合、ユーザーがフレームバッファオブジェクトに無効なバッファをアタッチした場合、またはテクスチャターゲットがGL_TEXTURE_2D の場合、テクスチャサイズとして2のべき乗でないwidth/heightが指定された場合に無効になる可能性があります。OpenGLのバージョンが2.0以上である場合、またはGL_ARB_texture_non_power_of_two拡張が存在する場合は、2のべき乗以外の制限は適用されません。

また、フレームバッファが作成されたQOpenGLContext が破壊され、フレームバッファの所有権を引き継ぐことができる共有コンテキストが他にない場合、フレームバッファは無効になる可能性がある。

bool QOpenGLFramebufferObject::release()

ウィンドウシステムが提供するデフォルトのフレームバッファにレンダリングを戻します。成功するとtrue を返し、失敗すると false を返します。

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

void QOpenGLFramebufferObject::setAttachment(QOpenGLFramebufferObject::Attachment attachment)

フレームバッファオブジェクトのアタッチメントをattachment に設定します。

これは、必要に応じて、デプスバッファとステンシルバッファのアタッチメントを解放または再アタッチするために使用できます。

注意: この関数は、現在のフレームバッファバインディングを変更します。

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

QSize QOpenGLFramebufferObject::size() const

このフレームバッファオブジェクトにアタッチされている色と深度/ステンシルのサイズを返します。

QList<QSize> QOpenGLFramebufferObject::sizes() const

このフレームバッファオブジェクトにアタッチされている全てのカラーアタッチメントのサイズを返します。

GLuint QOpenGLFramebufferObject::takeTexture()

このフレームバッファオブジェクトにアタッチされているテクスチャのテクスチャIDを返す。テクスチャの所有権は呼び出し元に移されます。

フレームバッファオブジェクトが現在バインドされている場合、暗黙のrelease ()が実行されます。次のbind ()の呼び出しの間に、新しいテクスチャが作成されます。

マルチサンプルフレームバッファオブジェクトが使用されている場合、テクスチャは存在せず、この関数からの戻り値は無効となります。同様に、不完全なフレームバッファオブジェクトも0を返します。

texture()、bind()、release()も参照

GLuint QOpenGLFramebufferObject::takeTexture(int colorAttachmentIndex)

これはオーバーロードされた関数です。

このフレームバッファオブジェクトのインデックスcolorAttachmentIndex のカラーアタッチメントにアタッチされているテクスチャのテクスチャIDを返します。テクスチャの所有権は呼び出し元に移ります。

colorAttachmentIndex0 の場合、動作はこの関数のパラメータなしのバリアントと同じです。

フレームバッファオブジェクトが現在バインドされている場合、暗黙のrelease() が実行されます。次にbind() を呼び出す間に、新しいテクスチャが作成されます。

マルチサンプルフレームバッファオブジェクトが使用されている場合、テクスチャは存在せず、この関数の戻り値は無効となります。同様に、不完全なフレームバッファオブジェクトも0を返します。

GLuint QOpenGLFramebufferObject::texture() const

このフレームバッファオブジェクトのデフォルトのレンダリングターゲットとしてアタッチされているテクスチャのテクスチャIDを返します。このテクスチャIDは、独自のOpenGLコードで通常のテクスチャとしてバインドすることができます。

マルチサンプルフレームバッファオブジェクトが使用されている場合、この関数から返される値は無効になります。

複数のテクスチャがアタッチされている場合、戻り値は最初のテクスチャのIDになります。

takeTexture() およびtextures()も参照してください

QList<GLuint> QOpenGLFramebufferObject::textures() const

アタッチされているすべてのテクスチャのテクスチャIDを返す。

マルチサンプルフレームバッファオブジェクトが使用されている場合は、空のベクトルが返されます。

takeTexture() およびtexture()も参照してください

QImage QOpenGLFramebufferObject::toImage(bool flipped = true) const

このフレームバッファオブジェクトの内容をQImage として返します。

flipped が真の場合、画像はOpenGL座標からラスター座標に反転される。QOpenGLPaintDevice と共に使用される場合、flippedQOpenGLPaintDevice::paintFlipped() の値の逆でなければなりません。

返される画像のフォーマットは,ARGB32またはRGB32です.後者は、internalTextureFormat() がGL_RGB に設定されている場合にのみ使用されます。 Qt 5.2 以降、(A)RGB32 への読み込みがサポートされていない場合、この関数は事前乗算された RGBA8888 または RGBx8888 にフォールバックします(これには OpenGL ES も含まれます)。Qt 5.4 以降、内部フォーマットが RGB10_A2 の場合は A2BGR30 イメージが返され、Qt 5.12 以降、内部フォーマットが RGBA16 の場合は RGBA64 イメージが返されます。

フレームバッファでのレンダリングが、事前乗算されたアルファを念頭に置いて行われていない場合は、事前乗算されていないフォーマットでラッパーQImage を作成してください。これは、QImage::save() のような操作を実行する前に必要です。そうしないと、そもそも事前乗算されていないにもかかわらず、画像データが事前乗算されなくなってしまうからです。ピクセルデータのコピーを実行せずにこのようなラッパーを作成するには、以下のようにします:

QImage fboImage(fbo.toImage());
QImage image(fboImage.constBits(), fboImage.width(), fboImage.height(), QImage::Format_ARGB32);

マルチサンプリングされたフレームバッファオブジェクトの場合、サンプルはGL_EXT_framebuffer_blit 拡張を使用して解決されます。この拡張が利用できない場合、返される画像の内容は未定義です。

シングルサンプリングされたフレームバッファの場合、その内容はglReadPixels を使って取得されます。これは高価で非効率的な操作になる可能性があります。したがって、この関数はできるだけ使わないことを推奨する。

QOpenGLPaintDevice::paintFlipped()も参照

QImage QOpenGLFramebufferObject::toImage(bool flipped, int colorAttachmentIndex) const

これはオーバーロードされた関数です。

このフレームバッファオブジェクトのインデックスcolorAttachmentIndex のカラーアタッチメントの内容をQImage として返します。flippedtrue に設定されている場合、このメソッドは画像を OpenGL 座標からラスター座標に反転します。

注意: このオーバーロードが完全に機能するのは、OpenGL実装で複数のレンダーターゲットがサポートされている場合だけです。そうでない場合は、1つのカラーアタッチメントのみが設定されます。

int QOpenGLFramebufferObject::width() const

フレームバッファオブジェクトのアタッチメントの幅を返します。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.