QRhiGraphicsPipeline Class
グラフィックスパイプラインの状態リソース。詳細...
| ヘッダー: | #include <rhi/qrhi.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS GuiPrivate) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
| qmake: | QT += gui-private |
| 以下のように: | Qt 6.6 |
| 継承元: | QRhiResource |
パブリック型
(since 6.6) struct | StencilOpState |
(since 6.6) struct | TargetBlend |
| enum | BlendFactor { Zero, One, SrcColor, OneMinusSrcColor, DstColor, …, OneMinusSrc1Alpha } |
| enum | BlendOp { Add, Subtract, ReverseSubtract, Min, Max } |
| flags | ColorMask |
| enum | ColorMaskComponent { R, G, B, A } |
| enum | CompareOp { Never, Less, Equal, LessOrEqual, Greater, …, Always } |
| enum | CullMode { None, Front, Back } |
| enum | Flag { UsesBlendConstants, UsesStencilRef, UsesScissor, CompileShadersWithDebugInfo, UsesShadingRate, UsesIndirectDraws } |
| flags | Flags |
| enum | FrontFace { CCW, CW } |
| enum | PolygonMode { Fill, Line } |
| enum | StencilOp { StencilZero, Keep, Replace, IncrementAndClamp, DecrementAndClamp, …, DecrementAndWrap } |
| enum | Topology { Triangles, TriangleStrip, TriangleFan, Lines, LineStrip, …, Patches } |
パブリック関数
| const QRhiShaderStage * | cbeginShaderStages() const |
| const QRhiGraphicsPipeline::TargetBlend * | cbeginTargetBlends() const |
| const QRhiShaderStage * | cendShaderStages() const |
| const QRhiGraphicsPipeline::TargetBlend * | cendTargetBlends() const |
| virtual bool | create() = 0 |
| QRhiGraphicsPipeline::CullMode | cullMode() const |
| int | depthBias() const |
| QRhiGraphicsPipeline::CompareOp | depthOp() const |
| QRhiGraphicsPipeline::Flags | flags() const |
| QRhiGraphicsPipeline::FrontFace | frontFace() const |
(since 6.11) bool | hasDepthClamp() const |
| bool | hasDepthTest() const |
| bool | hasDepthWrite() const |
| bool | hasStencilTest() const |
| float | lineWidth() const |
(since 6.7) int | multiViewCount() const |
| int | patchControlPointCount() const |
| QRhiGraphicsPipeline::PolygonMode | polygonMode() const |
| QRhiRenderPassDescriptor * | renderPassDescriptor() const |
| int | sampleCount() const |
| void | setCullMode(QRhiGraphicsPipeline::CullMode mode) |
| void | setDepthBias(int bias) |
(since 6.11) void | setDepthClamp(bool enable) |
| void | setDepthOp(QRhiGraphicsPipeline::CompareOp op) |
| void | setDepthTest(bool enable) |
| void | setDepthWrite(bool enable) |
| void | setFlags(QRhiGraphicsPipeline::Flags f) |
| void | setFrontFace(QRhiGraphicsPipeline::FrontFace f) |
| void | setLineWidth(float width) |
(since 6.7) void | setMultiViewCount(int count) |
| void | setPatchControlPointCount(int count) |
| void | setPolygonMode(QRhiGraphicsPipeline::PolygonMode mode) |
| void | setRenderPassDescriptor(QRhiRenderPassDescriptor *desc) |
| void | setSampleCount(int s) |
| void | setShaderResourceBindings(QRhiShaderResourceBindings *srb) |
| void | setShaderStages(std::initializer_list<QRhiShaderStage> list) |
| void | setShaderStages(InputIterator first, InputIterator last) |
| void | setSlopeScaledDepthBias(float bias) |
| void | setStencilBack(const QRhiGraphicsPipeline::StencilOpState &state) |
| void | setStencilFront(const QRhiGraphicsPipeline::StencilOpState &state) |
| void | setStencilReadMask(quint32 mask) |
| void | setStencilTest(bool enable) |
| void | setStencilWriteMask(quint32 mask) |
| void | setTargetBlends(std::initializer_list<QRhiGraphicsPipeline::TargetBlend> list) |
| void | setTargetBlends(InputIterator first, InputIterator last) |
| void | setTopology(QRhiGraphicsPipeline::Topology t) |
| void | setVertexInputLayout(const QRhiVertexInputLayout &layout) |
| QRhiShaderResourceBindings * | shaderResourceBindings() const |
| const QRhiShaderStage * | shaderStageAt(qsizetype index) const |
| qsizetype | shaderStageCount() const |
| float | slopeScaledDepthBias() const |
| QRhiGraphicsPipeline::StencilOpState | stencilBack() const |
| QRhiGraphicsPipeline::StencilOpState | stencilFront() const |
| quint32 | stencilReadMask() const |
| quint32 | stencilWriteMask() const |
| const QRhiGraphicsPipeline::TargetBlend * | targetBlendAt(qsizetype index) const |
| qsizetype | targetBlendCount() const |
| QRhiGraphicsPipeline::Topology | topology() const |
| QRhiVertexInputLayout | vertexInputLayout() const |
再実装されたパブリック関数
| virtual QRhiResource::Type | resourceType() const override |
詳細な説明
グラフィックスパイプラインを表します。これが基盤となるネイティブグラフィックスAPIのどの部分に正確にマッピングされるかは、状況によって異なります。Vulkanのようにパイプラインオブジェクトの概念が存在する場合、QRhi バックエンドはcreate()の呼び出し時にそのようなオブジェクトを作成します。 それ以外の環境(例えばOpenGLなど)では、QRhiGraphicsPipelineは単にさまざまな状態情報を収集するにとどまり、create()の主な役割は対応するシェーダープログラムの設定を行うことですが、要求された状態情報の確認は後回しにされます。
すべてのQRhiResource サブクラスと同様に、2段階の初期化パターンが適用されます。つまり、setDepthTest() などのセッターを介して値を設定しても、create() を呼び出した後にのみ有効になります。QRhiGraphicsPipeline がcreate() によって初期化された後は、いかなる値の変更も避けてください。状態を変更するには、新しい値を設定し、create() を再度呼び出してください。 ただし、これにより、基盤となるすべてのネイティブリソースが解放され、新しいリソースが作成されます。その結果、負荷が高く、コストのかかる操作となる可能性があります。むしろ、異なる状態を持つ複数のパイプラインを作成し、レンダリングパスを記録する際にswitch between them を呼び出すことを推奨します。
注: シェーダステージの設定は 必須です。少なくとも1つのステージが必要であり、かつ頂点ステージが1つ存在する必要があります。
注: シェーダーリソースのバインディングを設定することは 必須です。create() が呼び出される時点で、参照されるQRhiShaderResourceBindings に対して既にcreate() が呼び出されている必要があります。どのステージのシェーダーもリソースを期待していない限り、バインディングを持たないQRhiShaderResourceBindings と関連付けることも有効です。 実際のリソース(つまり、バインディングポイントのバッファやテクスチャなどがnullptr に設定されているもの)を一切指定していないQRhiShaderResourceBindings オブジェクトを使用することも、レンダリングパスの記録時にsetShaderResources()を介して、すべてのバインディングのリソースを指定するlayout-compatible QRhiShaderResourceBindings が設定される限り、有効です。
注:レンダーパス記述子の設定は 必須です。setRenderPassDescriptor() に渡すことのできるQRhiRenderPassDescriptor を取得するには、QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor() またはQRhiSwapChain::newCompatibleRenderPassDescriptor() のいずれかを使用してください。
注: 頂点入力レイアウトの設定は 必須です。
注: sampleCount() のデフォルト値は 1 であり、レンダリングターゲットのカラーおよび深度ステンシルアタッチメントのサンプル数と一致する必要があります。
注: 深度テスト、深度書き込み、およびステンシルテストは 、デフォルトでは無効になっています。面カリングモードは、デフォルトでカリングなしに設定されています。
注: stencilReadMask() およびstencilWriteMask() は、両方の面に適用されます。これらは両方とも、デフォルトで 0xFF に設定されています。
使用例
グラフィックスパイプラインのすべての設定には、多くのアプリケーションに適していると思われるデフォルト値があります。したがって、グラフィックスパイプラインを作成する最小限の例は次のようになります。これは、頂点シェーダーが入力位置 0 で単一のvec3 position 入力を受け取ることを前提としています。QRhiShaderResourceBindings およびQRhiRenderPassDescriptor オブジェクトに加え、頂点ステージおよびフラグメントステージ用のQShader コレクションを使用することで、次のようにパイプラインを作成できます。
QRhiShaderResourceBindings *srb;
QRhiRenderPassDescriptor *rpDesc;
QShader vs, fs;
// ...
QRhiVertexInputLayout inputLayout;
inputLayout.setBindings({ { 3 * sizeof(float) } });
inputLayout.setAttributes({ { 0, 0, QRhiVertexInputAttribute::Float3, 0 } });
QRhiGraphicsPipeline *ps = rhi->newGraphicsPipeline();
ps->setShaderStages({ { QRhiShaderStage::Vertex, vs }, { QRhiShaderStage::Fragment, fs } });
ps->setVertexInputLayout(inputLayout);
ps->setShaderResourceBindings(srb);
ps->setRenderPassDescriptor(rpDesc);
if (!ps->create()) { error(); }上記のコードは、多くの設定や状態についてデフォルト値を使用するパイプラインオブジェクトを作成します。例えば、Triangles トポロジーを使用し、背面カリングは行わず、ブレンディングは無効ですが、4つのチャンネルすべてでカラーライトが有効、深度テスト/書き込みは無効、ステンシル演算は無効となります。
注:これは 互換性の保証が限定的な RHI API です。詳細については、QRhi を参照してください。
QRhiCommandBuffer およびQRhiも参照してください 。
メンバ型のドキュメント
enum QRhiGraphicsPipeline::BlendFactor
ブレンド係数を指定します
| 定数 | 値 |
|---|---|
QRhiGraphicsPipeline::Zero | 0 |
QRhiGraphicsPipeline::One | 1 |
QRhiGraphicsPipeline::SrcColor | 2 |
QRhiGraphicsPipeline::OneMinusSrcColor | 3 |
QRhiGraphicsPipeline::DstColor | 4 |
QRhiGraphicsPipeline::OneMinusDstColor | 5 |
QRhiGraphicsPipeline::SrcAlpha | 6 |
QRhiGraphicsPipeline::OneMinusSrcAlpha | 7 |
QRhiGraphicsPipeline::DstAlpha | 8 |
QRhiGraphicsPipeline::OneMinusDstAlpha | 9 |
QRhiGraphicsPipeline::ConstantColor | 10 |
QRhiGraphicsPipeline::OneMinusConstantColor | 11 |
QRhiGraphicsPipeline::ConstantAlpha | 12 |
QRhiGraphicsPipeline::OneMinusConstantAlpha | 13 |
QRhiGraphicsPipeline::SrcAlphaSaturate | 14 |
QRhiGraphicsPipeline::Src1Color | 15 |
QRhiGraphicsPipeline::OneMinusSrc1Color | 16 |
QRhiGraphicsPipeline::Src1Alpha | 17 |
QRhiGraphicsPipeline::OneMinusSrc1Alpha | 18 |
enum QRhiGraphicsPipeline::BlendOp
ブレンド演算を指定します
| 定数 | 値 |
|---|---|
QRhiGraphicsPipeline::Add | 0 |
QRhiGraphicsPipeline::Subtract | 1 |
QRhiGraphicsPipeline::ReverseSubtract | 2 |
QRhiGraphicsPipeline::Min | 3 |
QRhiGraphicsPipeline::Max | 4 |
enum QRhiGraphicsPipeline::ColorMaskComponent
flags QRhiGraphicsPipeline::ColorMask
色の書き込みマスクを指定するためのフラグ値
| 定数 | 値 |
|---|---|
QRhiGraphicsPipeline::R | 1 << 0 |
QRhiGraphicsPipeline::G | 1 << 1 |
QRhiGraphicsPipeline::B | 1 << 2 |
QRhiGraphicsPipeline::A | 1 << 3 |
ColorMask 型は、QFlags<ColorMaskComponent> の typedef です。この型は、ColorMaskComponent の値の論理和(OR)を格納します。
enum QRhiGraphicsPipeline::CompareOp
深度またはステンシル比較関数を指定します
| 定数 | 値 | 説明 |
|---|---|---|
QRhiGraphicsPipeline::Never | 0 | |
QRhiGraphicsPipeline::Less | 1 | (深度のデフォルト値) |
QRhiGraphicsPipeline::Equal | 2 | |
QRhiGraphicsPipeline::LessOrEqual | 3 | |
QRhiGraphicsPipeline::Greater | 4 | |
QRhiGraphicsPipeline::NotEqual | 5 | |
QRhiGraphicsPipeline::GreaterOrEqual | 6 | |
QRhiGraphicsPipeline::Always | 7 | (ステンシルのデフォルト設定) |
enum QRhiGraphicsPipeline::CullMode
カリングモードを指定します
| 定数 | 値 | 説明 |
|---|---|---|
QRhiGraphicsPipeline::None | 0 | カリングなし(デフォルト) |
QRhiGraphicsPipeline::Front | 1 | 前面をカリングする |
QRhiGraphicsPipeline::Back | 2 | 背面をカリング |
enum QRhiGraphicsPipeline::Flag
flags QRhiGraphicsPipeline::Flags
パイプラインの動的な状態を表すフラグ値や、その他のオプション。ビューポートは常に動的です。
| 定数 | 値 | 説明 |
|---|---|---|
QRhiGraphicsPipeline::UsesBlendConstants | 1 << 0 | QRhiCommandBuffer::setBlendConstants() を通じてブレンド色の定数が設定されることを示します |
QRhiGraphicsPipeline::UsesStencilRef | 1 << 1 | QRhiCommandBuffer::setStencilRef() を通じてステンシル参照値が設定されることを示します |
QRhiGraphicsPipeline::UsesScissor | 1 << 2 | QRhiCommandBuffer::setScissor() を通じてシザー矩形が設定されることを示します |
QRhiGraphicsPipeline::CompileShadersWithDebugInfo | 1 << 3 | デバッグ情報を有効にしてシェーダーをコンパイルするよう要求します。これは、ソースコードからの実行時シェーダーコンパイルが関与する場合にのみ関連し、かつ基盤となるインフラストラクチャがこれをサポートしている場合にのみ適用されます。具体的な例を挙げると、Vulkan や SPIR-V では、GLSL から SPIR-V へのコンパイルが実行時に行われないため、これは関係ありません。 一方、Direct3DやHLSLの場合、複数の選択肢があります。QShader パッケージに事前コンパイル済みのバイトコード(DXBC )が含まれている場合、VulkanやSPIR-Vの場合と同様に、.qsb ファイルを生成するツールを通じてデバッグ情報を要求する必要があります。 ただし、プリコンパイル時または実行時に生成されるQShader パッケージにHLSLソースコードが含まれている場合、コンパイルの最初の段階(HLSLソースから中間形式への変換)も実行時に行われ、このフラグが考慮されます。 デバッグ情報は、特に RenderDoc などのツールにおいて重要です。これは、パイプラインを調査したり、頂点シェーダーやフラグメントシェーダーのデバッグを行ったりする際に、元のソースコードを確認できるためです。 |
QRhiGraphicsPipeline::UsesShadingRate | 1 << 4 | QRhiCommandBuffer::setShadingRate() を通じて、描画ごと(パイプラインごと)のシェーディングレート値が設定されることを示します。このフラグを指定せずに setShadingRate() を呼び出すと、基盤となるグラフィックス API によっては、結果が変動したり予期しない結果になったりする可能性があります。 |
QRhiGraphicsPipeline::UsesIndirectDraws (since Qt 6.12) | 1 << 5 | このフラグは、このパイプラインが間接描画コール(QRhiCommandBuffer::drawIndirect() またはQRhiCommandBuffer::drawIndexedIndirect())で使用されることを示します。このフラグを設定すると、Metal バックエンドは GPU 駆動のレンダリングに間接コマンドバッファ(ICB)を使用できるようになり、描画回数が多い場合、CPU のオーバーヘッドを大幅に削減できます。 間接描画を使用する際にこのフラグを設定しなくても機能はしますが、Metal ではパフォーマンスが最適化されない可能性があります。このフラグは、他のバックエンドには影響しません。 |
Flags 型はQFlags<Flag> の typedef です。Flag 値の論理和(OR)の組み合わせを格納します。
enum QRhiGraphicsPipeline::FrontFace
前面の巻線順序を指定します
| 定数 | 値 | 説明 |
|---|---|---|
QRhiGraphicsPipeline::CCW | 0 | 反時計回り(既定値) |
QRhiGraphicsPipeline::CW | 1 | 時計回り |
enum QRhiGraphicsPipeline::PolygonMode
ポリゴンのラスタライズモードを指定します
ポリゴンモード(Metal では「Triangle Fill Mode」、D3D では「Fill Mode」)は、ポリゴンをラスタライズする際に使用される塗りつぶしモードを指定します。ポリゴンは、実線(Fill)として、またはワイヤーフレーム(Line)として描画されます。
非塗りつぶしポリゴンモードのサポートはオプションであり、QRhi::NonFillPolygonMode 機能によって示されます。OpenGL ESおよび一部のVulkan実装では、この機能は「未サポート」と報告される可能性が高く、その場合、Fill以外の値は使用できません。
| 定数 | 値 | 説明 |
|---|---|---|
QRhiGraphicsPipeline::Fill | 0 | ポリゴンの内部が塗りつぶされます(デフォルト)。 |
QRhiGraphicsPipeline::Line | 1 | ポリゴンの境界エッジは線分として描画されます。 |
enum QRhiGraphicsPipeline::StencilOp
ステンシル演算を指定します
| 定数 | 値 | 説明 |
|---|---|---|
QRhiGraphicsPipeline::StencilZero | 0 | |
QRhiGraphicsPipeline::Keep | 1 | (既定値) |
QRhiGraphicsPipeline::Replace | 2 | |
QRhiGraphicsPipeline::IncrementAndClamp | 3 | |
QRhiGraphicsPipeline::DecrementAndClamp | 4 | |
QRhiGraphicsPipeline::Invert | 5 | |
QRhiGraphicsPipeline::IncrementAndWrap | 6 | |
QRhiGraphicsPipeline::DecrementAndWrap | 7 |
enum QRhiGraphicsPipeline::Topology
プリミティブのトポロジーを指定します
| 定数 | 値 | 説明 |
|---|---|---|
QRhiGraphicsPipeline::Triangles | 0 | (デフォルト) |
QRhiGraphicsPipeline::TriangleStrip | 1 | |
QRhiGraphicsPipeline::TriangleFan | 2 | (QRhi::TriangleFanTopology がサポートされている場合のみ利用可能) |
QRhiGraphicsPipeline::Lines | 3 | |
QRhiGraphicsPipeline::LineStrip | 4 | |
QRhiGraphicsPipeline::Points | 5 | |
QRhiGraphicsPipeline::Patches | 6 | (QRhi::Tessellation がサポートされている場合にのみ利用可能で、パイプラインにテッセレーションステージが存在している必要があります) |
メンバ関数のドキュメント
const QRhiShaderStage *QRhiGraphicsPipeline::cbeginShaderStages() const
シェーダステージリストの最初の項目を指す const イテレータを返します。
const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::cbeginTargetBlends() const
レンダリングターゲットのブレンド設定リストの最初の項目を指す const イテレータを返します。
const QRhiShaderStage *QRhiGraphicsPipeline::cendShaderStages() const
シェーダステージリストの最後の項目の直後を指す const イテレータを返します。
const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::cendTargetBlends() const
レンダリングターゲットのブレンド設定リストの最後の項目の直後を指す const イテレータを返します。
[pure virtual] bool QRhiGraphicsPipeline::create()
対応するネイティブグラフィックスリソースを作成します。以前にdestroy() を伴わない create() が実行された結果、すでにリソースが存在する場合、まず暗黙的にdestroy() が呼び出されます。
成功した場合はtrue を返し、グラフィックス操作が失敗した場合はfalse を返します。戻り値にかかわらず、destroy()を呼び出すことは常に安全です。
注:これは 、基盤となるグラフィックス API によっては、特にシェーダーがソースまたは中間バイトコード形式から GPU 独自の命令セットへコンパイル/最適化される場合、負荷の高い操作となる可能性があります。 該当する場合、QRhi バックエンドはこれを高速化するために、関連する非永続的な機能を自動的に設定します。たとえば、Vulkanバックエンドは、アプリケーションのライフタイム中にデータの再利用を向上させるために、VkPipelineCache を自動的に作成します。
注:ドライバは 、シェーダーやパイプラインデータに対して、さまざまな永続的(ディスクベース)なキャッシュ戦略を採用する場合もありますが、これは Qt からは隠蔽されており、Qt の制御範囲外です。 場合によっては、グラフィックス API やQRhi バックエンドによっては、QRhi 内にそのようなキャッシュを手動で管理するための機能があり、シリアル化可能な blob を取得して、アプリケーションの今後の実行時に再ロードすることで、パイプラインの作成時間を短縮することができます。詳細については、QRhi::pipelineCacheData() およびQRhi::setPipelineCacheData() を参照してください。 また、Qt Quick などの上位レベルの Qt フレームワークによって管理されるQRhi インスタンスを使用する場合、このようなディスクベースのキャッシュ処理が自動的に行われる可能性がある点にも注意してください。例えば、QQuickWindow はデフォルトでディスクベースのパイプラインキャッシュを使用しています(これは、ドライバレベルのキャッシュに加えて提供されます)。
QRhiGraphicsPipeline::CullMode QRhiGraphicsPipeline::cullMode() const
現在設定されているフェイスカリングモードを返します。
setCullMode()も参照してください 。
int QRhiGraphicsPipeline::depthBias() const
現在設定されている深度バイアスを返します。
setDepthBias()も参照してください 。
QRhiGraphicsPipeline::CompareOp QRhiGraphicsPipeline::depthOp() const
深度比較関数を返します。
setDepthOp()も参照してください 。
QRhiGraphicsPipeline::Flags QRhiGraphicsPipeline::flags() const
現在設定されているフラグを返します。
setFlags()も参照してください 。
QRhiGraphicsPipeline::FrontFace QRhiGraphicsPipeline::frontFace() const
現在設定されているフロントフェイスモードを返します。
setFrontFace()も参照してください 。
[since 6.11] bool QRhiGraphicsPipeline::hasDepthClamp() const
深度クランプが有効な場合、true を返します。
この関数は Qt 6.11 で導入されました。
bool QRhiGraphicsPipeline::hasDepthTest() const
深度テストが有効になっている場合、true を返します。
bool QRhiGraphicsPipeline::hasDepthWrite() const
深度書き込みが有効な場合、true を返します。
bool QRhiGraphicsPipeline::hasStencilTest() const
ステンシルテストが有効になっている場合、trueを返します。
float QRhiGraphicsPipeline::lineWidth() const
現在設定されている線の幅を返します。デフォルトは 1.0f です。
setLineWidth()も参照してください 。
[since 6.7] int QRhiGraphicsPipeline::multiViewCount() const
ビュー数を返します。デフォルトは 0 で、マルチビューレンダリングが行われないことを示します。
この関数は Qt 6.7 で導入されました。
setMultiViewCount()も参照してください 。
int QRhiGraphicsPipeline::patchControlPointCount() const
現在設定されているパッチ制御点数を返します。
setPatchControlPointCount()も参照してください 。
QRhiGraphicsPipeline::PolygonMode QRhiGraphicsPipeline::polygonMode() const
ポリゴンモードを返します。
setPolygonMode()も参照してください 。
QRhiRenderPassDescriptor *QRhiGraphicsPipeline::renderPassDescriptor() const
現在設定されているQRhiRenderPassDescriptor を返します。
setRenderPassDescriptor()も参照してください 。
[override virtual] QRhiResource::Type QRhiGraphicsPipeline::resourceType() const
QRhiResource::resourceType() const を再実装します。
リソースの型を返します。
int QRhiGraphicsPipeline::sampleCount() const
現在設定されているサンプル数を返します。1 は、マルチサンプルアンチエイリアシングが有効でないことを意味します。
setSampleCount()も参照してください 。
void QRhiGraphicsPipeline::setCullMode(QRhiGraphicsPipeline::CullMode mode)
指定された面カリングmode を設定します。
cullMode()も参照してください 。
void QRhiGraphicsPipeline::setDepthBias(int bias)
bias の深度を設定します。デフォルト値は0です。
depthBias()も参照してください 。
[since 6.11] void QRhiGraphicsPipeline::setDepthClamp(bool enable)
enable が true の場合、深度クリッピングを有効にします。深度クリッピングが有効になっている場合、通常であればニアクリップ面またはファークリップ面によってクリップされるはずのプリミティブはラスタライズされ、その深度値は深度範囲内にクリップされます。無効の場合(デフォルト)、そのようなプリミティブはクリップされます。
注: QRhi::DepthClamp 機能が「未サポート」と報告されている場合、この設定は 無視されます。
この関数は Qt 6.11 で導入されました。
関連項目: hasDepthClamp()。
void QRhiGraphicsPipeline::setDepthOp(QRhiGraphicsPipeline::CompareOp op)
深度比較関数 `op` を設定します。
depthOp()も参照してください 。
void QRhiGraphicsPipeline::setDepthTest(bool enable)
enable に基づいて、深度テストを有効または無効にします。デフォルトでは、深度テストと深度データの書き出しの両方が無効になっています。
hasDepthTest() およびsetDepthWrite()も参照してください 。
void QRhiGraphicsPipeline::setDepthWrite(bool enable)
enable に基づいて、深度バッファへの深度データの書き込みを制御します。デフォルトでは、これは無効になっています。通常、深度書き込みは深度テストと併せて有効にされます。
注: 深度テストを有効にしていない状態で深度書き込みを有効にしても 、期待通りの結果が得られない場合があるため、避けるべきです。
hasDepthWrite() およびsetDepthTest()も参照してください 。
void QRhiGraphicsPipeline::setFlags(QRhiGraphicsPipeline::Flags f)
フラグ「f 」を設定します。
flags()も参照してください 。
void QRhiGraphicsPipeline::setFrontFace(QRhiGraphicsPipeline::FrontFace f)
フロントフェイスモードをf に設定します。
frontFace()も参照してください 。
void QRhiGraphicsPipeline::setLineWidth(float width)
width 行を設定します。実行時に「QRhi::WideLines 」機能がサポートされていないと報告された場合、1.0f 以外の値は無視されます。
lineWidth()も参照してください 。
[since 6.7] void QRhiGraphicsPipeline::setMultiViewCount(int count)
マルチビューレンダリング用のビューcount を設定します。デフォルトは0で、マルチビューレンダリングを行わないことを示します。マルチビューレンダリングを有効にするには、count を2以上に設定する必要があります。
マルチビューは、MultiView feature がサポートされていると報告されている場合にのみ利用可能です。レンダリングターゲットは 2D テクスチャ配列である必要があり、そのレンダリングターゲットのカラーアタッチメントには、同じcount が設定されている必要があります。
マルチビューレンダリングの詳細については、QRhiColorAttachment::setMultiViewCount() を参照してください。
この関数は Qt 6.7 で導入されました。
multiViewCount()、QRhi::MultiView 、およびQRhiColorAttachment::setMultiViewCount()も参照してください 。
void QRhiGraphicsPipeline::setPatchControlPointCount(int count)
パッチ制御点の数をcount に設定します。デフォルト値は3です。これは、トポロジーがPatches に設定されている場合にのみ使用されます。
patchControlPointCount()も参照してください 。
void QRhiGraphicsPipeline::setPolygonMode(QRhiGraphicsPipeline::PolygonMode mode)
ポリゴンを「mode 」に設定します。デフォルトは「Fill」です。
polygonMode() およびQRhi::NonFillPolygonModeも参照してください 。
void QRhiGraphicsPipeline::setRenderPassDescriptor(QRhiRenderPassDescriptor *desc)
指定されたQRhiRenderPassDescriptor desc に関連付けられます。
renderPassDescriptor()も参照してください 。
void QRhiGraphicsPipeline::setSampleCount(int s)
サンプル数を設定します。s の一般的な値は 1、4、または 8 です。パイプラインは常にレンダリングターゲットと互換性がある必要があります。つまり、サンプル数が一致している必要があります。
sampleCount() およびQRhi::supportedSampleCounts()も参照してください 。
void QRhiGraphicsPipeline::setShaderResourceBindings(QRhiShaderResourceBindings *srb)
リソースバインディングのレイアウトおよびリソース(QRhiBuffer 、QRhiTexture )自体を記述する `srb ` と関連付けられます。後者はオプションです。これは、パイプラインの作成時にはレイアウトのみが重要となるためです。したがって、ここで渡される `srb ` は、ドローコールの記録前に `setShaderResources()` を通じて別の `layout-compatible ` `QRhiShaderResourceBindings ` がバインドされていれば、実際のバッファやテクスチャオブジェクトを未指定(nullptr )のままにしておくことができます。
shaderResourceBindings()も参照してください 。
void QRhiGraphicsPipeline::setShaderStages(std::initializer_list<QRhiShaderStage> list)
シェーダーステージのlist を設定します。
template <typename InputIterator> void QRhiGraphicsPipeline::setShaderStages(InputIterator first, InputIterator last)
イテレータ `first ` および `last` からシェーダステージのリストを設定します。
void QRhiGraphicsPipeline::setSlopeScaledDepthBias(float bias)
勾配のスケーリングされた深度bias を設定します。デフォルト値は 0 です。
slopeScaledDepthBias()も参照してください 。
void QRhiGraphicsPipeline::setStencilBack(const QRhiGraphicsPipeline::StencilOpState &state)
背面に対して、ステンシルテスト「state 」を設定します。
stencilBack()も参照してください 。
void QRhiGraphicsPipeline::setStencilFront(const QRhiGraphicsPipeline::StencilOpState &state)
前面に対して、ステンシルテスト「state 」を設定します。
stencilFront()も参照してください 。
void QRhiGraphicsPipeline::setStencilReadMask(quint32 mask)
ステンシル読み取り値 `mask` を設定します。デフォルト値は 0xFF です。
stencilReadMask()も参照してください 。
void QRhiGraphicsPipeline::setStencilTest(bool enable)
enable に基づいて、ステンシルテストを有効または無効にします。デフォルトでは無効になっています。
hasStencilTest()も参照してください 。
void QRhiGraphicsPipeline::setStencilWriteMask(quint32 mask)
ステンシル書き込みをmask に設定します。デフォルト値は0xFFです。
stencilWriteMask()も参照してください 。
void QRhiGraphicsPipeline::setTargetBlends(std::initializer_list<QRhiGraphicsPipeline::TargetBlend> list)
レンダリングターゲットのブレンド設定のlist を設定します。これはリスト形式となっています。これは、複数のレンダリングターゲットが使用される場合(つまり、複数のQRhiColorAttachment を持つQRhiTextureRenderTarget の場合)、レンダリングターゲット(カラーアタッチメント)ごとに1つのTargetBlend 構造体が必要となるためです。
デフォルトでは、デフォルトの構造を持つTargetBlend セットが1つ存在します。
QRhi::MaxColorAttachmentsも参照してください 。
template <typename InputIterator> void QRhiGraphicsPipeline::setTargetBlends(InputIterator first, InputIterator last)
イテレータ `first ` および `last` から、レンダリングターゲットのブレンド設定のリストを設定します。
void QRhiGraphicsPipeline::setTopology(QRhiGraphicsPipeline::Topology t)
プリミティブのトポロジーをt に設定します。
topology()も参照してください 。
void QRhiGraphicsPipeline::setVertexInputLayout(const QRhiVertexInputLayout &layout)
頂点入力layout を指定します。
vertexInputLayout()も参照してください 。
QRhiShaderResourceBindings *QRhiGraphicsPipeline::shaderResourceBindings() const
現在関連付けられているQRhiShaderResourceBindings オブジェクトを返します。
setShaderResourceBindings()も参照してください 。
const QRhiShaderStage *QRhiGraphicsPipeline::shaderStageAt(qsizetype index) const
指定されたindex にあるシェーダステージを返します。
qsizetype QRhiGraphicsPipeline::shaderStageCount() const
このパイプラインに含まれるシェーダステージの数を返します。
float QRhiGraphicsPipeline::slopeScaledDepthBias() const
現在設定されているスロープ・スケーリングされた深度バイアスを返します。
setSlopeScaledDepthBias()も参照してください 。
QRhiGraphicsPipeline::StencilOpState QRhiGraphicsPipeline::stencilBack() const
背面に対する現在のステンシルテストの状態を返します。
setStencilBack()も参照してください 。
QRhiGraphicsPipeline::StencilOpState QRhiGraphicsPipeline::stencilFront() const
前面の現在のステンシルテスト状態を返します。
setStencilFront()も参照してください 。
quint32 QRhiGraphicsPipeline::stencilReadMask() const
現在のステンシル読み取りマスクを返します。
setStencilReadMask()も参照してください 。
quint32 QRhiGraphicsPipeline::stencilWriteMask() const
現在のステンシル書き込みマスクを返します。
setStencilWriteMask()も参照してください 。
const QRhiGraphicsPipeline::TargetBlend *QRhiGraphicsPipeline::targetBlendAt(qsizetype index) const
指定されたindex におけるレンダリングターゲットのブレンド設定を返します。
qsizetype QRhiGraphicsPipeline::targetBlendCount() const
レンダリングターゲットのブレンド設定の数を返します。
QRhiGraphicsPipeline::Topology QRhiGraphicsPipeline::topology() const
現在設定されているプリミティブのトポロジーを返します。
setTopology()も参照してください 。
QRhiVertexInputLayout QRhiGraphicsPipeline::vertexInputLayout() const
現在設定されている頂点入力レイアウトの仕様を返します。
setVertexInputLayout()も参照してください 。
© 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.