このページでは

QSurfaceFormat Class

QSurfaceFormat クラスは、QSurface のフォーマットを表します。詳細...

ヘッダー: #include <QSurfaceFormat>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

パブリック型

enum FormatOption { StereoBuffers, DebugContext, DeprecatedFunctions, ResetNotification, ProtectedContent }
flags FormatOptions
enum OpenGLContextProfile { NoProfile, CoreProfile, CompatibilityProfile }
enum RenderableType { DefaultRenderableType, OpenGL, OpenGLES, OpenVG }
enum SwapBehavior { DefaultSwapBehavior, SingleBuffer, DoubleBuffer, TripleBuffer }

パブリック関数

QSurfaceFormat()
QSurfaceFormat(QSurfaceFormat::FormatOptions options)
QSurfaceFormat(const QSurfaceFormat &other)
~QSurfaceFormat()
int alphaBufferSize() const
int blueBufferSize() const
const QColorSpace &colorSpace() const
int depthBufferSize() const
int greenBufferSize() const
bool hasAlpha() const
int majorVersion() const
int minorVersion() const
QSurfaceFormat::FormatOptions options() const
QSurfaceFormat::OpenGLContextProfile profile() const
int redBufferSize() const
QSurfaceFormat::RenderableType renderableType() const
int samples() const
void setAlphaBufferSize(int size)
void setBlueBufferSize(int size)
(since 6.0) void setColorSpace(const QColorSpace &colorSpace)
void setDepthBufferSize(int size)
void setGreenBufferSize(int size)
void setMajorVersion(int major)
void setMinorVersion(int minor)
void setOption(QSurfaceFormat::FormatOption option, bool on = true)
void setOptions(QSurfaceFormat::FormatOptions options)
void setProfile(QSurfaceFormat::OpenGLContextProfile profile)
void setRedBufferSize(int size)
void setRenderableType(QSurfaceFormat::RenderableType type)
void setSamples(int numSamples)
void setStencilBufferSize(int size)
void setStereo(bool enable)
void setSwapBehavior(QSurfaceFormat::SwapBehavior behavior)
void setSwapInterval(int interval)
void setVersion(int major, int minor)
int stencilBufferSize() const
bool stereo() const
QSurfaceFormat::SwapBehavior swapBehavior() const
int swapInterval() const
bool testOption(QSurfaceFormat::FormatOption option) const
std::pair<int, int> version() const
QSurfaceFormat &operator=(const QSurfaceFormat &other)

静的パブリックメンバー

QSurfaceFormat defaultFormat()
void setDefaultFormat(const QSurfaceFormat &format)
bool operator!=(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)
bool operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)

詳細な説明

このフォーマットには、カラーバッファ(赤、緑、青)のサイズ、アルファバッファのサイズ、深度バッファおよびステンシルバッファのサイズ、およびマルチサンプリングにおける 1 ピクセルあたりのサンプル数が含まれます。 さらに、このフォーマットには、レンダリング用の OpenGL プロファイルやバージョン、ステレオバッファを有効にするかどうか、スワップの挙動などのサーフェス構成パラメータも含まれます。

注: コンテキストやウィンドウ形式の問題をトラブルシューティングする際は 、ロギングカテゴリ「qt.qpa.gl 」を有効にすると便利です。プラットフォームによっては、OpenGL の初期化や、QSurfaceFormat がマップされるネイティブのビジュアルまたはフレームバッファの設定に関する有用なデバッグ情報が表示される場合があります。

メンバ型のドキュメント

enum QSurfaceFormat::FormatOption
flags QSurfaceFormat::FormatOptions

この列挙型には、QSurfaceFormat で使用するフォーマットオプションが含まれています。

定数値説明
QSurfaceFormat::StereoBuffers0x0001サーフェス形式でステレオバッファを要求するために使用されます。
QSurfaceFormat::DebugContext0x0002追加のデバッグ情報を含むデバッグコンテキストを要求するために使用されます。
QSurfaceFormat::DeprecatedFunctions0x0004OpenGL コンテキストプロファイルに非推奨の関数が含まれるよう要求するために使用します。指定しない場合、非推奨としてマークされた機能をサポートしない、前方互換性のあるコンテキストが取得されるはずです。これには OpenGL バージョン 3.0 以降が必要です。
QSurfaceFormat::ResetNotification0x0008OpenGL コンテキストのリセットに関する通知を有効にします。これにより、コンテキストの `isValid()` 関数を通じてステータスを照会できるようになります。このフラグを設定しない場合でも、コンテキスト状態の喪失が絶対に発生しないとは限らないことに注意してください。さらに、実装によっては、このフラグの設定に関係なくコンテキストの喪失を報告する場合があります。 WGL を使用した Windows や、GLX を使用した Linux/X11 (xcb) など、コンテキストの喪失監視を動的に有効化できるプラットフォームでは、makeCurrent() の呼び出しごとにステータスが監視されます。詳細については、isValid() を参照してください。
QSurfaceFormat::ProtectedContent0x0010保護されたコンテンツへのアクセスを有効にします。これにより、GPU は、DRM で保護されたビデオコンテンツなど、保護されたリソース(サーフェス、バッファ、テクスチャ)に対して処理を行うことが可能になります。現在、EGL でのみ実装されています。

FormatOptions 型は、QFlags<FormatOption> の typedef です。これは、FormatOption 値の論理和(OR)の組み合わせを格納します。

enum QSurfaceFormat::OpenGLContextProfile

この列挙型は、QSurfaceFormat::setMajorVersion() およびQSurfaceFormat::setMinorVersion() と組み合わせて、OpenGL コンテキストのプロファイルを指定するために使用されます。

プロファイルは OpenGL 3.2 以降で提供されており、制限付きのコアプロファイルと、非推奨のサポート機能を含む可能性のある互換性プロファイルのいずれかを選択するために使用されます。

なお、コアプロファイルには、非推奨であり、将来のバージョンで削除される予定の機能が依然として含まれている場合があることに注意してください。設定された OpenGL バージョンでコアプロファイルの非推奨機能にアクセスするには、QSurfaceFormat のフォーマットオプションQSurfaceFormat::DeprecatedFunctions を使用できます。

定数値説明
QSurfaceFormat::NoProfile0OpenGL バージョンが 3.2 未満の場合。3.2 以降では、これは CoreProfile と同じです。
QSurfaceFormat::CoreProfile1OpenGL バージョン 3.0 で非推奨となった機能は利用できません。
QSurfaceFormat::CompatibilityProfile2以前の OpenGL バージョンからの機能は利用可能です。

enum QSurfaceFormat::RenderableType

この列挙型は、サーフェスのレンダリングバックエンドを指定します。

定数値説明
QSurfaceFormat::DefaultRenderableType0x0デフォルトの、指定されていないレンダリング方法
QSurfaceFormat::OpenGL0x1デスクトップ OpenGL レンダリング
QSurfaceFormat::OpenGLES0x2OpenGL ES 2.0 レンダリング
QSurfaceFormat::OpenVG0x4Open Vector Graphics レンダリング

enum QSurfaceFormat::SwapBehavior

この列挙型は、QSurfaceFormat がサーフェスのスワップ動作を指定するために使用されます。スワップ動作はアプリケーションからはほとんど認識されませんが、レンダリングのレイテンシやスループットなどの要素に影響を与えます。

定数値説明
QSurfaceFormat::DefaultSwapBehavior0プラットフォームのデフォルトの、未指定のスワップ動作。
QSurfaceFormat::SingleBuffer1シングルバッファリングを要求するために使用されます。中間オフスクリーンバッファを介さずに OpenGL レンダリングが画面に直接行われる場合、フリッカーが発生する可能性があります。
QSurfaceFormat::DoubleBuffer2これは通常、デスクトッププラットフォームにおけるデフォルトのスワップ動作であり、1つのバックバッファと1つのフロントバッファで構成されます。レンダリングはバックバッファに対して行われ、その後、実装に応じて、バックバッファとフロントバッファが入れ替わったり、バックバッファの内容がフロントバッファにコピーされたりします。
QSurfaceFormat::TripleBuffer3このスワップ動作は、レンダリングレートが画面のリフレッシュレートにぎりぎり追いついている場合に、フレームがスキップされるリスクを低減するために使用されることがあります。プラットフォームによっては、パイプライン処理の効率化により、GPUの使用効率がわずかに向上することもあります。 トリプルバッファリングには、追加の1フレーム分のメモリ使用量とレイテンシという代償が伴い、基盤となるプラットフォームによってはサポートされていない場合もあります。

メンバ関数のドキュメント

QSurfaceFormat::QSurfaceFormat()

デフォルトの初期化が施された QSurfaceFormat を生成します。

注: プラットフォーム間および OpenGL 実装間の移植性を最大限に高めるため、デフォルトでは OpenGL 2.0 が指定されます。

QSurfaceFormat::QSurfaceFormat(QSurfaceFormat::FormatOptions options)

指定されたフォーマット `options` を使用して、`QSurfaceFormat` を作成します。

QSurfaceFormat::QSurfaceFormat(const QSurfaceFormat &other)

other のコピーを作成します。

[noexcept] QSurfaceFormat::~QSurfaceFormat()

QSurfaceFormat を削除します。

int QSurfaceFormat::alphaBufferSize() const

カラーバッファのアルファチャンネルのサイズ(ビット単位)を取得します。

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

int QSurfaceFormat::blueBufferSize() const

カラーバッファの青チャンネルのサイズ(ビット単位)を取得します。

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

const QColorSpace &QSurfaceFormat::colorSpace() const

色空間を返します。

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

[static] QSurfaceFormat QSurfaceFormat::defaultFormat()

グローバルなデフォルトのサーフェス形式を返します。

setDefaultFormat() が呼び出されていない場合、これはデフォルト構築された `QSurfaceFormat` です。

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

int QSurfaceFormat::depthBufferSize() const

深度バッファのサイズを返します。

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

int QSurfaceFormat::greenBufferSize() const

カラーバッファの緑チャンネルのサイズをビット単位で取得します。

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

bool QSurfaceFormat::hasAlpha() const

アルファバッファのサイズがゼロより大きい場合、true を返します。

これは、そのサーフェスがピクセル単位の半透明効果で使用される可能性があることを意味します。

int QSurfaceFormat::majorVersion() const

OpenGLのメジャーバージョンを返します。

デフォルトのバージョンは 2.0 です。

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

int QSurfaceFormat::minorVersion() const

OpenGLのマイナーバージョンを返します。

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

QSurfaceFormat::FormatOptions QSurfaceFormat::options() const

現在設定されているフォーマットオプションを返します。

setOption()、setOptions()、およびtestOption()も参照してください 。

QSurfaceFormat::OpenGLContextProfile QSurfaceFormat::profile() const

設定済みの OpenGL コンテキストプロファイルを取得します。

要求された OpenGL のバージョンが 3.2 未満の場合、この設定は無視されます。

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

int QSurfaceFormat::redBufferSize() const

カラーバッファの赤チャンネルのサイズをビット単位で取得します。

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

QSurfaceFormat::RenderableType QSurfaceFormat::renderableType() const

レンダリング可能なタイプを取得します。

デスクトップOpenGL、OpenGL ES、およびOpenVG の中から選択します。

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

int QSurfaceFormat::samples() const

マルチサンプリングが有効な場合はピクセルあたりのサンプル数を返し、マルチサンプリングが無効な場合は-1 を返します。デフォルトの戻り値は-1 です。

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

void QSurfaceFormat::setAlphaBufferSize(int size)

カラーバッファのアルファチャンネルのビットに、希望するsize を設定します。

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

void QSurfaceFormat::setBlueBufferSize(int size)

カラーバッファの青チャンネルのビットに、希望するsize を設定します。

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

[since 6.0] void QSurfaceFormat::setColorSpace(const QColorSpace &colorSpace)

優先されるcolorSpace を設定します。

たとえば、これにより、sRGBに対応しているプラットフォーム上で、sRGB対応のデフォルトフレームバッファを持つウィンドウを要求できるようになります。

注: 要求された色空間がプラットフォームでサポートされていない場合 、その要求は無視されます。ウィンドウ作成後にQSurfaceFormat を照会し、色空間の要求が受け入れられたかどうかを確認してください。

注:この 設定は、 ウィンドウのデフォルトのフレームバッファが、指定された色空間での更新およびブレンディングに対応しているかどうかを制御します。これ自体では、アプリケーションの出力は変更されません。アプリケーションのレンダリングコードは、標準の線形演算を使用する代わりに、指定された色空間で更新およびブレンディングを実行できるようにするために、適切な OpenGL 呼び出しを介してオプトインする必要があります。

この関数は Qt 6.0 で導入されました。

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

[static] void QSurfaceFormat::setDefaultFormat(const QSurfaceFormat &format)

グローバルなデフォルトのサーフェス「format 」を設定します。

このフォーマットは、QOpenGLContext 、QWindow 、QOpenGLWidget 、および類似のクラスでデフォルトで使用されます。

これは、当該クラス独自の setFormat() 関数を使用することで、インスタンスごとにいつでも上書きすることができます。 ただし、アプリケーションの起動時にすべてのウィンドウのフォーマットを一度に設定するほうが、多くの場合、便利です。また、この関数を使用してフォーマットを設定すると、Qt によって内部的に作成されたものを含め、すべてのコンテキストとサーフェスが同じフォーマットを使用することが保証されるため、共有コンテキストが必要な場合でも、適切な動作が保証されます。

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

void QSurfaceFormat::setDepthBufferSize(int size)

深度バッファの最小サイズをsize に設定します。

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

void QSurfaceFormat::setGreenBufferSize(int size)

カラーバッファの緑チャンネルのビットに、希望するsize を設定します。

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

void QSurfaceFormat::setMajorVersion(int major)

指定したmajor のOpenGLバージョンを設定します。

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

void QSurfaceFormat::setMinorVersion(int minor)

minor のOpenGLバージョンを指定します。

デフォルトのバージョンは 2.0 です。

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

void QSurfaceFormat::setOption(QSurfaceFormat::FormatOption option, bool on = true)

on がtrueの場合、フォーマットオプションoption を設定します。そうでない場合は、このオプションをクリアします。

オプションが反映されたことを確認するには、サーフェス/コンテキストの作成後に、実際のフォーマットと要求されたフォーマットを比較してください。

setOptions()、options()、およびtestOption()も参照してください 。

void QSurfaceFormat::setOptions(QSurfaceFormat::FormatOptions options)

フォーマットオプションをoptions に設定します。

オプションが正しく適用されたかどうかを確認するには、サーフェス/コンテキストの作成後に、実際のフォーマットと指定したフォーマットを比較してください。

options() およびtestOption()も参照してください 。

void QSurfaceFormat::setProfile(QSurfaceFormat::OpenGLContextProfile profile)

目的の OpenGL コンテキストprofile を設定します。

要求された OpenGL のバージョンが 3.2 未満の場合、この設定は無視されます。

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

void QSurfaceFormat::setRedBufferSize(int size)

カラーバッファの赤チャンネルのビットに、希望するsize を設定します。

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

void QSurfaceFormat::setRenderableType(QSurfaceFormat::RenderableType type)

目的のレンダラtype を設定します。

デスクトップ OpenGL、OpenGL ES、およびOpenVG の中から選択します。

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

void QSurfaceFormat::setSamples(int numSamples)

マルチサンプリングが有効になっている場合、1ピクセルあたりの推奨サンプリング数を `numSamples` に設定します。デフォルトでは、マルチサンプリングは無効になっています。

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

void QSurfaceFormat::setStencilBufferSize(int size)

ステンシルバッファの推奨サイズをsize ビットに設定します。

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

void QSurfaceFormat::setStereo(bool enable)

enable がtrueの場合、ステレオバッファリングを有効にします。そうでない場合は、ステレオバッファリングを無効にします。

デフォルトでは、ステレオバッファリングは無効になっています。

ステレオバッファリングは、左眼用および右眼用の画像を生成するために追加のカラーバッファを提供します。

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

void QSurfaceFormat::setSwapBehavior(QSurfaceFormat::SwapBehavior behavior)

サーフェスのスワップbehavior を設定します。

スワップの挙動は、シングルバッファリング、ダブルバッファリング、またはトリプルバッファリングのいずれを行うかを指定します。デフォルトの `DefaultSwapBehavior` は、プラットフォームのデフォルトのスワップ挙動を採用します。

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

void QSurfaceFormat::setSwapInterval(int interval)

優先スワップ間隔を設定します。スワップ間隔は、バッファのスワップが行われるまでに表示されるビデオフレームの最小数を指定します。これを使用することで、ウィンドウへのGL描画を画面の垂直リフレッシュレートに同期させることができます。

interval の値を0に設定すると、垂直リフレッシュ同期がオフになり、0より大きい値に設定すると、垂直同期がオンになります。interval の値を、例えば10のように大きく設定すると、バッファスワップごとに10回の垂直リトレースが行われることになります。

デフォルトの間隔は 1 です。

スワップ間隔の変更は、基盤となるプラットフォームでサポートされていない場合があります。その場合、リクエストは黙って無視されます。

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

void QSurfaceFormat::setVersion(int major, int minor)

major およびminor のOpenGLバージョンを希望の値に設定します。

デフォルトのバージョンは 2.0 です。

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

int QSurfaceFormat::stencilBufferSize() const

ステンシルバッファのサイズをビット単位で返します。

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

bool QSurfaceFormat::stereo() const

ステレオバッファリングが有効な場合は `true ` を返し、そうでない場合は `false` を返します。ステレオバッファリングはデフォルトで無効になっています。

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

QSurfaceFormat::SwapBehavior QSurfaceFormat::swapBehavior() const

設定されたスワップの動作を返します。

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

int QSurfaceFormat::swapInterval() const

スワップ間隔を返します。

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

bool QSurfaceFormat::testOption(QSurfaceFormat::FormatOption option) const

フォーマットオプション `option ` が設定されている場合は `true` を返し、そうでない場合は `false` を返します。

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

std::pair<int, int> QSurfaceFormat::version() const

OpenGLのバージョンを表す std::pair<int, int> を返します。

バージョンチェックに役立ちます。例:format.version() >= std::pair(3, 2)

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

QSurfaceFormat &QSurfaceFormat::operator=(const QSurfaceFormat &other)

このオブジェクトにother を割り当てます。

関連する非メンバー

[noexcept] bool operator!=(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)

2つのQSurfaceFormat オブジェクトlhs とrhs のすべてのオプションが等しい場合はfalse を返し、そうでない場合はtrue を返します。

[noexcept] bool operator==(const QSurfaceFormat &lhs, const QSurfaceFormat &rhs)

2つのQSurfaceFormat オブジェクトlhs とrhs のすべてのオプションが等しい場合、true を返します。

© 2026 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.