QRhiGraphicsPipeline Class
グラフィックスパイプラインの状態リソース。詳細...
Header: | #include <rhi/qrhi.h> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) |
qmake: | QT += gui-private |
Since: | Qt 6.6 |
Inherits: | 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 } |
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 |
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) |
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では、create ()を呼び出すと、QRhi バックエンドがそのようなオブジェクトを作成します。その他の場所、たとえばOpenGLでは、QRhiGraphicsPipelineは単にさまざまな状態を収集するだけで、create ()の主なタスクは対応するシェーダープログラムをセットアップすることですが、要求された状態を見るのは後の時点に延期されます。
すべてのQRhiResource サブクラスと同様に、2 段階の初期化パターンが適用されます。たとえば、setDepthTest() のように、セッターを介して値を設定することは、create() を呼び出した後にのみ有効です。QRhiGraphicsPipeline がcreate() で初期化された後は、値を変更しないでください。状態を変更するには、新しい値を設定し、create() を再度呼び出します。しかし、この操作では、すべてのネイティブ・リソースが解放され、新しいリソースが作成されます。その結果、重く高価な操作になる可能性がある。むしろ、異なるステートを持つ複数のパイプラインを作成し、レンダー パスを記録するときにswitch between them を使用することをお勧めします。
注意: シェーダステージの設定は必須です。少なくとも 1 つのステージがあり、頂点ステージがなければなりません。
注: シェーダーリソースバインディングの設定は必須です。参照されるQRhiShaderResourceBindings は、create() が呼び出されるまでに、create() がすでに呼び出されている必要があります。どのステージのどのシェーダもリソースを期待していない限り、バインディングを持たないQRhiShaderResourceBindings との関連付けも有効です。実際のリソースを指定しないQRhiShaderResourceBindings オブジェクト(すなわち、バイン ディングポイントのためのバッファ、テクスチャなどがnullptr
に設定され ている)を使用することも、すべてのバインディングのリソースを指定するlayout-compatible QRhiShaderResourceBindings が、レンダーパスを記録するときにsetShaderResources() を介して設定される限り、有効です。
注: レンダーパス記述子の設定は必須です。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 | デバッグ情報を有効にしてシェーダーをコンパイルすることを要求します。これは、ソースコードからのランタイムシェーダコンパイルが関係し、基礎となるインフラストラクチャがこれをサポートする場合にのみ関連します。具体的な例では、GLSL から SPIR-V へのコンパイルは実行時に行われないため、Vulkan と SPIR-V では関係ありません。一方、Direct3DとHLSLについては、複数の選択肢があります。QShader パッケージがコンパイル済みのバイトコード(DXBC )と共に出荷される場合、デバッグ情報は、VulkanとSPIR-Vの場合と同様に、.qsb ファイルを生成するツールを通じて要求されます。しかし、HLSL ソースコードが事前または実行時に生成されるQShader パッケージに含まれている場合、コンパイルの第 1 段階(HLSL ソースから中間フォーマットへの変換)は、このフラグを考慮した上で実行時にも行われます。デバッグ情報は、パイプラインを調査するときや、頂点シェーダーやフラグメントシェーダーのデバッグを実行するときに元のソースコードを見ることができるので、特に RenderDoc のようなツールに関連します。 |
Flags 型はQFlags<Flag> の typedef です。Flag値のORの組み合わせを格納します。
enum QRhiGraphicsPipeline::FrontFace
前面の巻き順を指定する
定数 | 値 | 説明 |
---|---|---|
QRhiGraphicsPipeline::CCW | 0 | 反時計回り(デフォルト) |
QRhiGraphicsPipeline::CW | 1 | 時計回り |
enum QRhiGraphicsPipeline::PolygonMode
ポリゴンのラスタライズモードを指定します
ポリゴンモード(メタルでは三角形塗りつぶしモード、D3Dでは塗りつぶしモード)は、ポリゴンのラスタライズ時に使用する塗りつぶしモードを指定します。ポリゴンはソリッド(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 ()を呼び出すと常に安全である。
注意: 特に、シェーダがソースからコンパイル/最適化されたり、中間バイトコード フォーマットから GPU 独自の命令セットにコンパイル/最適化されたりする場合、基礎となるグ ラフィックス API によっては、これは高価な操作になる可能性があります。該当する場合、QRhi バックエンドは、これを加速するために関連する非パーシステント機能を自動的にセットアップします。たとえば、Vulkan バックエンドは、アプリケーションのライフタイム中にデータの再利用を改善するためにVkPipelineCache
を自動的に作成します。
注意: ドライバは、シェーダとパイプラインデータのために様々な永続的な(ディスクベースの)キャッシング戦略を採用することがあります。グラフィックス API とQRhi バックエンドによっては、QRhi 内にそのようなキャッシュを手動で管理する機能があり、パイプラインの作成時間を短縮するために、アプリケーションの将来の実行で再ロードできるシリアライズ可能なブロブを取得できます。詳細は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() も参照して ください。
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()も参照して ください。
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)
リソースバインディングレイアウトを記述するsrb とリソース (QRhiBuffer,QRhiTexture) 自体を関連付けます。パイプライン作成時に重要なのはレイアウトだけなので、後者はオプションです。したがって、ここで渡される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 )、レンダーターゲット(カラーアタッチメント)ごとに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() も参照して ください。
©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。