Obsolete Members for Qt3DRender

Qt3DRender クラスの以下のメンバーは非推奨となっています。これらは、古いソースコードが引き続き動作するように提供されているものです。新しいコードでの使用は強く推奨しません。

名前空間

(deprecated) namespace Quick
(deprecated) namespace Render

クラス

(deprecated) class QAbstractLight
(deprecated) class QAbstractRayCaster
(deprecated) class QAbstractTexture
(deprecated) class QAbstractTextureImage
(deprecated) class QAlphaCoverage
(deprecated) class QAlphaTest
(deprecated) class QBlendEquation
(deprecated) class QBlendEquationArguments
(deprecated) class QBlitFramebuffer
(deprecated) class QBufferCapture
(deprecated) class QCamera
(deprecated) class QCameraLens
(deprecated) class QCameraSelector
(deprecated) class QClearBuffers
(deprecated) class QClipPlane
(deprecated) class QColorMask
(deprecated) class QComputeCommand
(deprecated) class QCullFace
(deprecated) class QDebugOverlay
(deprecated) class QDepthRange
(deprecated) class QDepthTest
(deprecated) class QDirectionalLight
(deprecated) class QDispatchCompute
(deprecated) class QDithering
(deprecated) class QEffect
(deprecated) class QEnvironmentLight
(deprecated) class QFilterKey
(deprecated) class QFrameGraphNode
(deprecated) class QFrontFace
(deprecated) class QFrustumCulling
(deprecated) class QGeometryRenderer
(deprecated) class QGraphicsApiFilter
(deprecated) class QLayer
(deprecated) class QLayerFilter
(deprecated) class QLevelOfDetail
(deprecated) class QLevelOfDetailBoundingSphere
(deprecated) class QLevelOfDetailSwitch
(deprecated) class QLineWidth
(deprecated) class QMaterial
(deprecated) class QMemoryBarrier
(deprecated) class QMesh
(deprecated) class QMultiSampleAntiAliasing
(deprecated) class QNoDepthMask
(deprecated) class QNoDraw
(deprecated) class QNoPicking
(deprecated) class QObjectPicker
(deprecated) class QPaintedTextureImage
(deprecated) class QParameter
(deprecated) class QPickEvent
(deprecated) class QPickLineEvent
(deprecated) class QPickPointEvent
(deprecated) class QPickTriangleEvent
(since 6.0, deprecated) class QPickingProxy
(deprecated) class QPickingSettings
(deprecated) class QPointLight
(deprecated) class QPointSize
(deprecated) class QPolygonOffset
(deprecated) class QProximityFilter
(deprecated) class QRasterMode
(deprecated) class QRayCaster
(deprecated) class QRayCasterHit
(deprecated) class QRenderAspect
(deprecated) class QRenderCapabilities
(deprecated) class QRenderCapture
(deprecated) class QRenderCaptureReply
(deprecated) class QRenderPass
(deprecated) class QRenderPassFilter
(deprecated) class QRenderSettings
(deprecated) class QRenderState
(deprecated) class QRenderStateSet
(deprecated) class QRenderSurfaceSelector
(deprecated) class QRenderTarget
(deprecated) class QRenderTargetOutput
(deprecated) class QRenderTargetSelector
(deprecated) class QSceneLoader
(deprecated) class QScissorTest
(deprecated) class QScreenRayCaster
(deprecated) class QSeamlessCubemap
(deprecated) class QSetFence
(deprecated) class QShaderData
(deprecated) class QShaderImage
(deprecated) class QShaderProgram
(deprecated) class QShaderProgramBuilder
(deprecated) class QSharedGLTexture
(deprecated) class QSortPolicy
(deprecated) class QSpotLight
(deprecated) class QStencilMask
(deprecated) class QStencilOperation
(deprecated) class QStencilOperationArguments
(deprecated) class QStencilTest
(deprecated) class QStencilTestArguments
(deprecated) class QSubtreeEnabler
(deprecated) class QTechnique
(deprecated) class QTechniqueFilter
(deprecated) class QTexture1D
(deprecated) class QTexture1DArray
(deprecated) class QTexture2D
(deprecated) class QTexture2DArray
(deprecated) class QTexture2DMultisample
(deprecated) class QTexture2DMultisampleArray
(deprecated) class QTexture3D
(deprecated) class QTextureBuffer
(deprecated) class QTextureCubeMap
(deprecated) class QTextureCubeMapArray
(deprecated) class QTextureData
(deprecated) class QTextureDataUpdate
(deprecated) class QTextureImage
(deprecated) class QTextureImageData
(deprecated) class QTextureImageDataGenerator
(deprecated) class QTextureLoader
(deprecated) class QTextureRectangle
(deprecated) class QTextureWrapMode
(deprecated) class QViewport
(deprecated) class QWaitFence

名前空間

[deprecated] namespace Qt3DRender::Quick

この名前空間は非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] namespace Qt3DRender::Render

この名前空間は非推奨です。新しいコードでの使用は強く推奨しません。

クラス

[deprecated] class Qt3DRender::QAbstractLight

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QAbstractRayCaster

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QAbstractRayCaster は、3Dシーンにレイをキャストするための抽象基底クラスです。Qt3DRender::QAbstractRayCaster は直接インスタンス化することはできず、そのサブクラスを通じてインスタンス化する必要があります。QAbstractRayCasterは、実行モードやレイヤーの処理など、すべてのレイキャスターに共通するプロパティを定義していますが、実際のレイキャストの詳細についてはサブクラスに委ねています。

レイキャスティングは、Qt3DRender::QObjectPicker を使用したピッキングとは異なり、トリガーとしてマウスイベントを必要としません。

デフォルトでは、Qt3DRender::QAbstractRayCaster のインスタンスは無効になっています。有効にすると、指定されたレイについて、毎フレームごとにオブジェクトとの交差がチェックされます。オブジェクトが見つからなかった場合でも、QAbstractRayCaster::hits プロパティにはレイキャスティングの結果が反映されます。

Qt3DRender::QPickingSettings を使用すると、どのプリミティブを検査するかや、結果の返され方など、レイキャスティングの制御を行うことができます。

さらに、Qt3DRender::QLayer コンポーネントを使用することで、エンティティやエンティティのサブグラフがレイキャスティングに対してどのように反応するかを制御できます。

注: QAbstractRayCaster から派生したコンポーネントは 、複数のエンティティ間で共有すべきではありません。

関連項目: Qt3DRender::QRayCaster 、Qt3DRender::QScreenRayCaster 、Qt3DRender::QObjectPicker 、Qt3DRender::QPickingSettings 、およびQt3DRender::QNoPicking 。

[deprecated] class Qt3DRender::QAbstractTexture

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QAbstractTexture クラスは直接使用するのではなく、そのサブクラスのいずれかを介して使用すべきです。各サブクラスは、所定のテクスチャターゲット(2D、2DArray、3D、CubeMap など)を実装しています。各サブクラスは、各レイヤー、キューブマップの面、およびミップマップレベルに対して一連のファンクタを提供します。 バックエンドは、これらのファンクタを使用して、対応する OpenGL テクスチャにデータを適切に書き込みます。テクスチャの生成やアップロードの速度を低下させないよう、ファンクタでの処理は最小限に抑えることが求められます。テクスチャの内容が処理に時間がかかるプロシージャル生成プロセスの結果である場合、これをファンクタ内で直接実装しないことを推奨します。

すべてのテクスチャは一意です。同じテクスチャを 2 回インスタンス化すると、GPU 上に 2 つの同一のテクスチャが作成され、共有は行われません。

[deprecated] class Qt3DRender::QAbstractTextureImage

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QAbstractTexture に画像データを提供する手段としては、QAbstractTextureImage を使用する必要があります。このクラスには、ミップマップレベル、レイヤー、キューブ面など、OpenGL テクスチャにデータを適切な位置に読み込むために必要な情報が含まれています。

実際のデータは、バックエンドでAspectジョブによって実行されるQTextureImageDataGenerator を通じて提供されます。QAbstractTextureImageをサブクラス化し、ファンクタおよびファンクタが実際のデータをロードするために必要な追加のプロパティを提供する必要があります。

注: QAbstractTextureImageは決して共有してはなりません。 このルールを守らない場合、クラッシュが発生するか、良くて未定義の挙動となる可能性があります。

[deprecated] class Qt3DRender::QAlphaCoverage

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QAlphaCoverage クラスは、アルファ値からカバレッジへのマルチサンプリングモードを有効にします。有効にすると、フラグメントのアルファ値がサンプルのカバレッジとして使用され、フラグメントのカバレッジ値と組み合わされます。マルチサンプリングが無効になっている場合、Qt3DRender::QAlphaCoverage は何も行いません。アルファ値からカバレッジへの変換は、順序非依存のブレンディングが必要な場合、例えば葉や草、その他の豊かな植生をレンダリングする際に最も有用です。

これは、QRenderPass::addRenderState() を呼び出すことで、QRenderPass に追加できます:

QRenderPass *renderPass = new QRenderPass();

// Create a alpha coverage render state
QAlphaCoverage *alphaCoverage = new QAlphaCoverage();
QMultiSampleAntiAliasing *multiSampleAntialiasing = new QMultiSampleAntiAliasing();

// Add the render states to the render pass
renderPass->addRenderState(alphaCoverage);
renderPass->addRenderState(multiSampleAntialiasing);

あるいは、QRenderStateSet::addRenderState() を呼び出すことで、QRenderStateSet に追加することもできます:

QRenderStateSet *renderStateSet = new QRenderStateSet();

// Create a alpha coverage render state
QAlphaCoverage *alphaCoverage = new QAlphaCoverage();
QMultiSampleAntiAliasing *multiSampleAntialiasing = new QMultiSampleAntiAliasing();

// Add the render states to the render state set
renderStateSet->addRenderState(alphaCoverage);
renderStateSet->addRenderState(multiSampleAntialiasing);

Qt3DRender::QMultiSampleAntiAliasingも参照してください 。

[deprecated] class Qt3DRender::QAlphaTest

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

OpenGLのドキュメントにも説明されている通り、アルファテストでは、入力されたフラグメントのアルファ値と定数の参照値との比較結果に基づいて、フラグメントを破棄します。

[deprecated] class Qt3DRender::QBlendEquation

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

ブレンド式は、新しいピクセルがフレームバッファ内の既存のピクセルとどのように合成されるかを決定するために使用されます。

[deprecated] class Qt3DRender::QBlendEquationArguments

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

OpenGL 3.0以前: すべての描画バッファに同じブレンド状態を設定します(1つのQBlendEquationArguments)。OpenGL 3.0~4.0以前: すべての描画バッファに対して同じブレンディング状態を設定しますが、特定のバッファについてはブレンディングを無効にすることができます(glBlendFuncを設定するためのQBlendEquationArgumentsが1つ、描画バッファの有効化/無効化のためのQBlendEquationArgumentsがn個)。OpenGL 4.0以降:描画バッファごとに個別にブレンディング状態を設定できます。

[deprecated] class Qt3DRender::QBlitFramebuffer

このクラスは非推奨となっています。新しいコードでの使用は強く推奨しません。

このノードは、glBlitFrameBuffer または同等のものをコマンドストリームに挿入します。これにより、テクスチャやQRenderTarget でラップされたサーフェスバックバッファ間で矩形をコピーする際、テクスチャ付きクワッドを描画するよりも効率的な方法が提供されます。また、指定された補間方法によるスケーリングもサポートしています。

注:実際には、 ブリット処理ではいかなるエンティティに対しても描画コールを発行すべきではないため、QBlitFramebuffer ノードは多くの場合、QNoDraw と組み合わせて使用されます。

[deprecated] class Qt3DRender::QBufferCapture

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QCamera

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QCameraLens

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QCameraSelector

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QCameraSelector を使用すると、FrameGraph がエンティティを描画する際に使用するカメラを選択できます。

[deprecated] class Qt3DRender::QClearBuffers

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QClearBuffers のFrameGraphノードを使用すると、特定のレンダリングターゲットバッファを特定の値でクリアすることができます。

[deprecated] class Qt3DRender::QClipPlane

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

デフォルトでは、OpenGLは最大8つの追加クリッピングプレーンをサポートしています。 Qt3DCore::QClipPlane を使用すると、これらの追加クリッピングプレーンのうち 1 つを有効にできます。これらのプレーンは、シェーダー内で gl_ClipDistance[i] を使用して操作することができ、ここで i は 0 から 7 までの値をとります。基盤となる実装では 8 つ以上のクリッピングプレーンがサポートされている場合がありますが、保証されるものではありません。

[deprecated] class Qt3DRender::QColorMask

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

デフォルトでは、各色成分(赤、緑、青、アルファ)のプロパティは `true ` に設定されており、これによりそれらはフレームバッファに書き込まれます。いずれかの色成分を `false ` に設定すると、その成分がフレームバッファに書き込まれるのを防ぐことができます。

[deprecated] class Qt3DRender::QComputeCommand

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QComputeCommand は、コンピュートシェーダーへの処理発行に使用されます。コンピュートシェーダーは、QComputeCommandが追加されたのと同じエンティティのQMaterial コンポーネントで指定されます。workGroupX 、workGroupY 、workGroupZ プロパティは、コンピュートシェーダーの呼び出しにおけるワークグループのサイズを指定します。実際にコマンドを発行するには、FrameGraph内にQt3DRender::QDispatchCompute ノードが存在する必要があります。

注: レンダリングポリシーが「Qt3DRender::QRenderSettings::OnDemand 」に設定されており、シーンに変更がない場合 、「ComputeCommand 」は繰り返し呼び出されません。シーンに新しいフレームのレンダリングをトリガーするその他の変更がない場合でも、「ComputeCommand 」を繰り返し呼び出すには、レンダリングポリシーを「Qt3DRender::QRenderSettings::Always 」に設定する必要があります。

[deprecated] class Qt3DRender::QCullFace

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QCullFace は、前面または背面のファセットをカリングするかどうかを設定します。ファセットには、三角形、四角形、多角形、および長方形が含まれます。

QRenderPass のaddRenderState()メソッドを呼び出すことで追加できます:

// using namespace Qt3DRender;

QRenderPass *renderPass = new QRenderPass();

// Create a front face culling render state
QCullFace *cullFront = new QCullFace();
cullFront->setMode(QCullFace::Front);

// Add the render state to the render pass
renderPass->addRenderState(cullFront);

または、QRenderStateSet に対して addRenderState() メソッドを呼び出すことで追加できます:

// using namespace Qt3DRender;

QRenderStateSet *renderStateSet = new QRenderStateSet();

// Create a front face culling render state
QCullFace *cullFront = new QCullFace();
cullFront->setMode(QCullFace::Front);

// Add the render state to the render pass
renderStateSet->addRenderState(cullFront);

QFrontFaceも参照してください 。

[deprecated] class Qt3DRender::QDebugOverlay

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

カスタムフレームグラフのいずれかのブランチに QDebugOverlay を配置すると、シーンの詳細を含むオーバーレイがシーンとともにレンダリングされます。

標準の QForwardRenderer には QDebugOverlay ノードが含まれており、QForwardRenderer::showDebugOverlay プロパティを介して有効にすることができます。

[deprecated] class Qt3DRender::QDepthRange

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

デフォルトでは、OpenGL はシーンの深度情報を [0.0, 1.0] の範囲で深度バッファに書き込みます。ここで、0.0 は近クリップ面、1.0 は遠クリップ面に対応します。 QDepthRange を使用すると、これらの値を別の範囲にマッピングすることができ、シーンの一部が常に他の部分の前面または背面にレンダリングされるようにできます。near および far の有効な値は 0 から 1 の間です。

[deprecated] class Qt3DRender::QDepthTest

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QDepthTest クラスは、指定された深度テスト関数を用いて深度テストを有効にするために使用されます。深度テストにより、テストに合格したフラグメントの色値を書き込み、テストに不合格となったフラグメントを拒否することが可能になります。 深度テストでは、深度関数を使用して、フラグメントの深度値を z バッファの値と比較します。基になるサーフェスに z バッファがない場合、QDepthTest は何も行いません。

QAlphaTest およびQStencilTestも参照してください 。

[deprecated] class Qt3DRender::QDirectionalLight

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

指向性ライトは、太陽光と同様の挙動を示す光源です。指向性ライトからの光は、シーン内のどの位置にあるかに関係なく、すべての方向から同じ強度でオブジェクトに当たります。

[deprecated] class Qt3DRender::QDispatchCompute

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

Qt3DRender::QDispatchCompute を使用すると、GPU上でコンピュートシェーダーが実行するためのワークを発行できます。workGroupX 、workGroupY 、およびworkGroupZ プロパティは、コンピュートシェーダーの呼び出しにおけるワークグループのサイズを指定します。QComputeCommand コンポーネントをエンティティに追加することで、Qt3Dに対し、コンピュート呼び出しのためにエンティティからマテリアルとジオメトリを選択するよう指示する必要があります。 シェーダー呼び出しのワークグループサイズは、QDispatchComputeおよびQComputeCommand で指定されたワークグループサイズの最大値となります。

[deprecated] class Qt3DRender::QDithering

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

Qt3DRender::QDithering クラスは、ディザリングを有効にします。ディザリングは、色値にノイズを加えることで量子化誤差をランダム化し、最終的な画像にバンディングなどの大規模なパターンが生じるのを防ぎます。ディザリングは、RGB565やRGBA4444など、色深度の低いサーフェスにレンダリングする場合に最も有効です。

[deprecated] class Qt3DRender::QEffect

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QEffect クラスは、マテリアルのレンダリング効果を生成するために使用される一連の手法と、それらの手法で使用されるパラメータを統合したものです。

QEffectのインスタンスは、可能な限り複数のQMaterial インスタンス間で共有する必要があります。

注:QEffect ノードは無効にすることはできません。

QEffect *effect = new QEffect();

// Create technique, render pass and shader
QTechnique *gl3Technique = new QTechnique();
QRenderPass *gl3Pass = new QRenderPass();
QShaderProgram *glShader = new QShaderProgram();

// Set the shader on the render pass
gl3Pass->setShaderProgram(glShader);

// Add the pass to the technique
gl3Technique->addRenderPass(gl3Pass);

// Set the targeted GL version for the technique
gl3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
gl3Technique->graphicsApiFilter()->setMajorVersion(3);
gl3Technique->graphicsApiFilter()->setMinorVersion(1);
gl3Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::CoreProfile);

// Add the technique to the effect
effect->addTechnique(gl3Technique);

QEffect で定義されたQParameter は、QTechnique およびQRenderPass で定義された(同名の)パラメータを上書きしますが、QRenderPassFilter 、QTechniqueFilter 、およびQMaterial のパラメータによって上書きされます。

QMaterial 、QTechnique 、およびQParameterも参照してください 。

[deprecated] class Qt3DRender::QEnvironmentLight

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QEnvironmentLight は、キューブマップを使用して画像ベースのライティング(IBL)を実装します。IBL は、物理ベースレンダリング(PBR)と組み合わせて使用されることが多い手法です。 キューブマップは通常、高ダイナミックレンジ(HDR)画像に基づいており、値の範囲の拡大に対応できる適切な OpenGL フォーマット(RGBA16F など)で作成されることが想定されています。

QEnvironmentLight に必要なキューブマップを作成するために使用できるツールは数多くあります。その例としては、以下のようなものがあります。

HDRI Havenでは、上記のツールでソース素材として使用できる、CC0 ライセンスの HDR 画像を多数提供しています。

[deprecated] class Qt3DRender::QFilterKey

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

フィルターキーは、QTechnique およびQRenderPass によって、テクニークやレンダリングパスがレンダリングのどの段階で使用されるかを指定するために使用されます。

注:QFilterKey ノードは無効にすることはできません。

[deprecated] class Qt3DRender::QFrameGraphNode

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

このクラスは、フレームグラフ固有の挙動を提供しないため、直接インスタンス化されることはほとんどありませんが、動的なフレームグラフ内で他のノードをグループ化するには便利な場合があります。実際の挙動はサブクラスによって提供されます。

サブクラスは以下の通りです:

class説明
Qt3DRender::QCameraSelectorシーン内で利用可能なすべてのカメラからカメラを選択します
Qt3DRender::QClearBuffersどのバッファを、どのような値でクリアするかを指定する
Qt3DRender::QDispatchCompute演算カーネルを指定する
Qt3DRender::QFrustumCullingフラスタムカリングを有効にする
Qt3DRender::QLayerFilter描画するレイヤーを選択する
Qt3DRender::QNoDraw描画を無効にする
Qt3DRender::QRenderPassFilter描画するレンダーパスの選択
Qt3DRender::QRenderStateSetレンダリング状態を設定する
Qt3DRender::QRenderSurfaceSelector描画対象のサーフェスを選択する
Qt3DRender::QRenderTargetSelector描画先のQRenderTarget を選択する
Qt3DRender::QSortPolicy描画順序を決定するためのエンティティの並べ替え方法を指定する
Qt3DRender::QTechniqueFilter描画に使用する技法を選択する
Qt3DRender::QViewportビューポートを指定する
Qt3DRender::QMemoryBarrierメモリバリアを配置します

[deprecated] class Qt3DRender::QFrontFace

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

Qt3DRender::QFrontFace は、前面を向くポリゴンの巻き方向を設定します。

「QCullFace」も参照してください 。

[deprecated] class Qt3DRender::QFrustumCulling

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QFrustumCulling クラスは、カメラの視点およびエンティティの QGeometry 境界に基づいて、描画可能なエンティティのフラスタムカリングを可能にします。FrameGraph に QFrustumCulling が存在する場合、QGeometry 境界がカメラのフラスタム(すなわちカメラの視野)と交差するエンティティのみが描画されます。 QFrustumCullingが存在しない場合、描画可能なエンティティはすべて描画されます。カメラは、現在の階層内のQCameraSelector フレームグラフノードによって選択されます。レンダリングされるシーンが複雑な場合、フラスタムカリングによりGPUの処理時間を大幅に節約できます。

「QCameraSelector」も参照してください 。

[deprecated] class Qt3DRender::QGeometryRenderer

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QGeometryRenderer は、Qt3DCore::QGeometry を描画するために必要なすべての情報を保持しています。QGeometryはジオメトリデータの座標を保持し、QGeometryRendererはそのデータの解釈方法を指定します。

[deprecated] class Qt3DRender::QGraphicsApiFilter

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

[deprecated] class Qt3DRender::QLayer

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QLayer FrameGraph内のQt3DRender::QLayerFilter と連携して動作します。

QLayerは、recursiveプロパティをtrueに設定することで、エンティティのサブツリーに適用できます。

 #include <Qt3DCore/QEntity>
 #include <Qt3DRender/QGeometryRenderer>
 #include <Qt3DRender/QLayer>
 #include <Qt3DRender/QLayerFilter>
 #include <Qt3DRender/QViewport>

// Scene
Qt3DCore::QEntity *rootEntity = new Qt3DCore::Qt3DCore::QEntity;

Qt3DCore::QEntity *renderableEntity = new Qt3DCore::Qt3DCore::QEntity(rootEntity);
Qt3DRender::QGeometryRenderer *geometryRenderer = new Qt3DCore::QGeometryRenderer(renderableEntity);
Qt3DRender::QLayer *layer1 = new Qt3DCore::QLayer(renderableEntity);
layer1->setRecursive(true);
renderableEntity->addComponent(geometryRenderer);
renderableEntity->addComponent(layer1);

...

// FrameGraph
Qt3DRender::QViewport *viewport = new Qt3DRender::QViewport;
Qt3DRender::QLayerFilter *layerFilter = new Qt3DRender::QLayerFilter(viewport);
layerFilter->addLayer(layer1);

...

Qt3DRender::QLayerFilterも参照してください 。

[deprecated] class Qt3DRender::QLayerFilter

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QLayerFilter を使用すると、フレームグラフのその分岐でどのレイヤーを描画するかをレンダラーに指示できます。QLayerFilterは、QLayerFilterに追加されたQLayer インスタンス、およびQt3DCore::QEntity のコンポーネントに基づいて、描画するエンティティを選択します。

QLayerFilter は、filterMode プロパティに応じて、特定のQLayer を持つエンティティを選択または除外するように設定できます。デフォルトでは、QLayerFilter によっても参照されているQLayer オブジェクトのいずれかを参照しているエンティティが選択されます (AcceptAnyMatchingLayers)。

FrameGraphツリー内では、ルートからリーフに至る枝の中に、複数のQLayerFilter ノードをネストさせることができます。 その場合、フィルタリングはまず、最初に宣言されたQLayerFilter で指定されたフィルタリング方法を使用して、シーン内のすべてのエンティティに対して行われます。その後、フィルタリングされたエンティティのサブセットに対して、2番目に宣言されたQLayerFilter で設定されたフィルタリング方法に基づいて再度フィルタリングが行われます。この処理は、そのブランチのすべてのQLayerFilter ノードが処理されるまで繰り返されます。

[deprecated] class Qt3DRender::QLevelOfDetail

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QLevelOfDetail を使用すると、オブザーバーからの距離や画面上のサイズに基づいて、エンティティの表示を制御できます。

レンダリングパフォーマンスを向上させるため、非常に小さなオブジェクトについては、ジオメトリやテクスチャの詳細度を大幅に抑えてレンダリングすることができます。

このコンポーネントは、カメラからの距離または画面サイズとして解釈される値の閾値を指定することで制御されます。

視点が変化すると、currentIndex プロパティが変更され、range 配列内の対応する値を反映するようになります。

currentIndex プロパティを使用すると、例えば、エンティティの有効化や無効化、マテリアルの変更などを行うことができます。

LevelOfDetail コンポーネントは、複数のentities 間で共有することはできません。

 #include <Qt3DCore/QEntity>
 #include <Qt3DRender/QGeometryRenderer>
 #include <Qt3DRender/QLevelOfDetail>

// Scene
Qt3DCore::QEntity *rootEntity = new Qt3DCore::Qt3DCore::QEntity;

Qt3DCore::QEntity *renderableEntity = new Qt3DCore::QEntity(rootEntity);
Qt3DRender::QGeometryRenderer *geometryRenderer = new Qt3DCore::QGeometryRenderer(renderableEntity);
renderableEntity->addComponent(geometryRenderer);
Qt3DRender::QLevelOfDetail* lod = new Qt3Render::QLevelOfDetail(renderableEntity);
QList<qreal> thresholds = {20, 35, 50, 65};
lod->setThresholds(thresholds);
lod->setCamera(mainCamera);
renderableEntity->addComponent(lod);

// connect to QLevelOfDetail::currentIndexChanged to toggle rendering
...

[deprecated] class Qt3DRender::QLevelOfDetailBoundingSphere

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QLevelOfDetailSwitch

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

このコンポーネントはエンティティに割り当てられます。エンティティがカメラに対する距離を変えた場合、QLevelOfDetailSwitch は、インデックス Qt3DRender::QLevelOfDetailSwitch::currentIndex に一致するエンティティを除き、すべての子エンティティを無効にします。

[deprecated] class Qt3DRender::QLineWidth

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QMaterial

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QMaterialは、entity のレンダリングを指定する手段を提供します。あらゆる要素が独自のQMaterialのサブクラスを定義できるため、Materialを使用して視覚的要素を記述することができます。例えば、要素からの音の反射の仕方や、表面の温度などが挙げられます。

QMaterial自体は、それだけでは何もしません。QEffect ノードを参照して初めて、QMaterialは有用なものとなります。

実際には、1つのQEffect が複数のQMaterialコンポーネントから参照されることがよくあります。これにより、エフェクト、テクニック、パス、シェーダーを一度だけ作成しておき、QParameter のインスタンスを追加することでマテリアルを指定できるようになります。

QMaterial上で定義されたQParameter は、QEffect 、QTechnique 、およびQRenderPass で定義された(同名の)パラメータを上書きしますが、QRenderPassFilter およびQTechniqueFilter で定義されたパラメータには上書きされます。

QMaterial *material1 = new QMaterial();
QMaterial *material2 = new QMaterial();

// Create effect, technique, render pass and shader
QEffect *effect = new QEffect();
QTechnique *gl3Technique = new QTechnique();
QRenderPass *gl3Pass = new QRenderPass();
QShaderProgram *glShader = new QShaderProgram();

// Set the shader on the render pass
gl3Pass->setShaderProgram(glShader);

// Add the pass to the technique
gl3Technique->addRenderPass(gl3Pass);

// Set the targeted GL version for the technique
gl3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
gl3Technique->graphicsApiFilter()->setMajorVersion(3);
gl3Technique->graphicsApiFilter()->setMinorVersion(1);
gl3Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::CoreProfile);

// Add the technique to the effect
effect->addTechnique(gl3Technique);

// Set the effect on the materials
material1->setEffect(effect);
material2->setEffect(effect);

// Set different parameters on the materials
const QString parameterName = QStringLiteral("color");
material1->addParameter(new QParameter(parameterName, QColor::fromRgbF(0.0f, 1.0f, 0.0f, 1.0f)));
material2->addParameter(new QParameter(parameterName, QColor::fromRgbF(1.0f, 1.0f, 1.0f, 1.0f)));

QEffect 、QTechnique 、およびQParameterも参照してください 。

[deprecated] class Qt3DRender::QMemoryBarrier

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QMemoryBarrier のFrameGraphノードは、レンダリングの特定のタイミングで特定のメモリバリアを挿入するために使用されます。これは、GPU上での描画コマンドと演算コマンドを適切に同期させるために必要です。

バリアは、先行するコマンドによって発行されたメモリ操作の順序を定義します。つまり、コマンド1が、後続のコマンド2で頂点属性バッファとして使用されるバッファを操作している場合、メモリバリアはコマンド1の後に配置し、頂点属性バッファに適したバリアタイプを設定する必要があります。

FrameGraphの分岐内でQMemoryBarrierノードが検出された場合、たとえそれらの描画コマンドや演算コマンドが分岐のより深い位置で定義されていたとしても、そのバリアはそれらに先立って適用されます。

OpenGLレンダリングについては、このページでメモリモデルに関する詳細情報を確認できます。

[deprecated] class Qt3DRender::QMesh

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

さまざまな形式の外部ファイルからメッシュデータを読み込みます。Qt3DRender::QMesh は、データを単一のメッシュに読み込みます。

Qt3D 5.9 において、QMesh は以下の形式をサポートしています:

  • Wavefront OBJ
  • スタンフォード・トライアングル・フォーマット (PLY)
  • STL (STereoLithography)

また、SDKがインストールされており、fbxジオメトリローダープラグインがビルドされて見つかる場合、QMeshは以下の形式もサポートします:

  • Autodesk FBX

複数のオブジェクトで構成されるシーン全体を読み込みたい場合は、代わりにQt3DRender::QSceneLoader を使用することをお勧めします。

「Qt3DRender::QSceneLoader」も参照してください 。

[deprecated] class Qt3DRender::QMultiSampleAntiAliasing

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QMultiSampleAntiAliasing クラスは、マルチサンプルアンチエイリアシングを有効にします。

QRenderPass::addRenderState() を呼び出すことで、QRenderPass に追加できます:

QRenderPass *renderPass = new QRenderPass();

QMultiSampleAntiAliasing *msaa = new QMultiSampleAntiAliasing();
renderPass->addRenderState(msaa);

あるいは、QRenderStateSet::addRenderState() を呼び出すことで、QRenderStateSet に追加することもできます:

QRenderStateSet *renderStateSet = new QRenderStateSet();

QMultiSampleAntiAliasing *msaa = new QMultiSampleAntiAliasing();
renderStateSet->addRenderState(msaa);

マルチサンプリングを有効にするには、レンダリングターゲットをマルチサンプリングを有効にして割り当てる必要があります:

QTexture2DMultisample *colorTex = new QTexture2DMultisample;
colorTex->setFormat(QAbstractTexture::RGBA8_UNorm);
colorTex->setWidth(1024);
colorTex->setHeight(1024);

QRenderTargetOutput *color = new QRenderTargetOutput;
color->setAttachmentPoint(QRenderTargetOutput::Color0);
color->setTexture(colorTex);

QTexture2DMultisample *depthStencilTex = new QTexture2DMultisample;
depthStencilTex->setFormat(QAbstractTexture::RGBA8_UNorm);
depthStencilTex->setWidth(1024);
depthStencilTex->setHeight(1024);

QRenderTargetOutput *depthStencil = new QRenderTargetOutput;
depthStencil->setAttachmentPoint(QRenderTargetOutput::DepthStencil);
depthStencil->setTexture(depthStencilTex);

Qt3DRender::QRenderTarget *renderTarget = new Qt3DRender::QRenderTarget;
renderTarget->addOutput(color);
renderTarget->addOutput(depthStencil);

さらに、シェーダーコードでは、texture() の代わりにマルチサンプリング対応のサンプラー型と texelFetch() を使用する必要があります。

たとえば、次のようなコードがある場合

#version 150

uniform sampler2D colorTexture;
in vec2 texCoord;
out vec4 fragColor;

void main()
{
    fragColor = texture(colorTexture, texCoord);
}

次のように書き換えることができます。

#version 150

uniform sampler2DMS colorTexture;
in vec2 texCoord;
out vec4 fragColor;

void main()
{
    ivec2 tc = ivec2(floor(textureSize(colorTexture) * texCoord));
    vec4 c = texelFetch(colorTexture, tc, 0) +
                texelFetch(colorTexture, tc, 1) +
                texelFetch(colorTexture, tc, 2) +
                texelFetch(colorTexture, tc, 3);
    fragColor = c / 4.0;
}

注: グラフィックス API として OpenGLを使用する場合 、QMultiSampleAntiAliasing がレンダリングステートに追加されていると、glEnable(GL_MULTISAMPLE) が呼び出されます。

[deprecated] class Qt3DRender::QNoDepthMask

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QNoDepthMask クラスは、深度バッファへのフラグメント深度の書き込みを無効にします。

「Qt3DRender::QDepthTest」も参照してください 。

[deprecated] class Qt3DRender::QNoDraw

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QNoDraw FrameGraphが、メッシュの描画を必要とせずに、何らかのレンダリング状態を設定したり、バッファをクリアしたりする必要がある場合に使用すべきです。これは、シーン内の利用可能なQt3DRender::QRenderPass インスタンスのいずれとも一致しないQt3DRender::QRenderPassFilter を持つことと同じ効果がありますが、実際にフィルタリングを実行する際のオーバーヘッドコストは発生しません。

無効にされている場合、Qt3DRender::QNoDraw ノードはシーンのレンダリングを妨げません。したがって、enabledプロパティを切り替えることで、Qt3DRender::QNoDraw を有効または無効にすることができます。

Qt3DRender::QNoDraw 通常、複数のレンダリングパスがある場合にシーンが描画されないようにするため、Qt3DRenderR::QClearBuffersノードの子として使用されます。

Qt3DRender::QViewport *viewport = new Qt3DRender::QViewport();
Qt3DRender::QCameraSelector *cameraSelector = new Qt3DRender::QCameraSelector(viewport);

Qt3DRender::QClearBuffers *clearBuffers = new Qt3DRender::QClearBuffers(cameraSelector);
clearBuffers->setBuffers(Qt3DRender::QClearBuffers::ColorDepthBuffer);

Qt3DRender::QNoDraw *noDraw = new Qt3DRender::QNoDraw(clearBuffers);

Qt3DRender::QRenderPassFilter *mainPass = new Qt3DRender::QRenderPassFilter(cameraSelector);
....
Qt3DRender::QRenderPassFilter *previewPass = new Qt3DRender::QRenderPassFilter(cameraSelector);
....

[deprecated] class Qt3DRender::QNoPicking

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

無効化されている場合、Qt3DRender::QNoPicking ノードはピッキングの実行を阻止しません。したがって、enabledプロパティの切り替えは、Qt3DRender::QNoPicking を有効または無効にする手段となります。

FrameGraph内で複数のサブビューポートを使用する場合、QNoPickingを使用すると、重なり合うビューポート間や非表示のビューポート間で発生するピック競合を防ぐのに役立ちます。また、非表示のビューポートや、ピック操作を必要としないシーンの一部に対して、不要な処理が発生するのを防ぐための最適化としても使用できます。

Qt3DRender::QViewport *viewport = new Qt3DRender::QViewport();
Qt3DRender::QCameraSelector *cameraSelector = new Qt3DRender::QCameraSelector(viewport);
Qt3DRender::QNoPicking *noPicking = new Qt3DRender::QNoPicking(cameraSelector);

Qt3DRender::QClearBuffers *clearBuffers = new Qt3DRender::QClearBuffers(noPicking);
clearBuffers->setBuffers(Qt3DRender::QClearBuffers::ColorDepthBuffer);

Qt3DRender::QRenderPassFilter *mainPass = new Qt3DRender::QRenderPassFilter(cameraSelector);
....
Qt3DRender::QRenderPassFilter *previewPass = new Qt3DRender::QRenderPassFilter(cameraSelector);
....

関連項目: Qt3DRender::QObjectPicker 、Qt3DRender::QRayCaster 、およびQt3DRender::QScreenRayCaster 。

[deprecated] class Qt3DRender::QObjectPicker

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

ビューポートとカメラのあらゆる組み合わせにおいて、ピッキング処理ではシーン内にレイを投射し、そのレイとバウンディングボリュームが交差するエンティティを検出します。バウンディングボリュームは、ジオメトリの `boundingVolumePositionAttribute` で指定された属性バッファ内の値を用いて計算されます。

pickAttribute プロパティで定義されたバウンディングボリュームがレイと交差した際、pressed()、released()、clicked()、moved()、entered()、およびexited() 信号がエミットされます。

ほとんどのシグナルは、QPickEvent のインスタンスを伝達します。QPickingSettings::pickMode()がQPickingSettings::TrianglePicking に設定されている場合、pickパラメータの実際の型はQPickTriangleEvent になります。

ピッククエリは、マウスのクリック時およびクリック解除時に実行されます。ドラッグが有効になっている場合、いずれかのボタンが押されている間は、マウスの移動ごとにクエリが行われます。ホバーが有効になっている場合、ボタンが押されていなくても、マウスの移動ごとにクエリが行われます。

一般的なレイキャスティングクエリについては、Qt3DRender::QRayCaster およびQt3DRender::QScreenRayCaster を参照してください。

注: このコンポーネントのインスタンスは 共有しないでください。この条件を守らないと、ほぼ確実に未定義の挙動が生じます。

注: カメラの ファープレーン値は ピッキングに影響し、その値が約100,000を超えると、浮動小数点数の精度の問題により誤った結果が生成されることがあります。

関連項目: Qt3DRender::QPickingSettings 、Qt3DCore::QGeometry 、Qt3DCore::QAttribute 、Qt3DRender::QPickEvent 、Qt3DRender::QPickTriangleEvent 、およびQt3DRender::QNoPickingも参照してください 。

[deprecated] class Qt3DRender::QPaintedTextureImage

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QPaintedTextureImage は、QPainter を通じてテクスチャ画像(ひいては OpenGL テクスチャ)を指定する手段を提供します。テクスチャ画像の幅と高さは、width、height、または size プロパティを通じて指定できます。

QPaintedTextureImage はサブクラス化され、仮想関数 `paint()` が実装されている必要があります。QPaintedTextureImage に対して `update()` が呼び出されるたびに、`paint()` 関数が呼び出され、結果の画像がアップロードされます。

QPaintedTextureImageは、何らかのQAbstractTexture にアタッチされている必要があります。

[deprecated] class Qt3DRender::QParameter

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QParameter は、QRenderPass 、QTechnique 、QEffect 、QMaterial 、QTechniqueFilter 、QRenderPassFilter によって参照できます。実行時、レンダリングの特定のステップでどのシェーダーが選択されているかによって、QParameter に含まれる値は、そのシェーダーに QParameter の名前と一致する名前のユニフォームが含まれている場合、変換されてアップロードされます。

QParameter *param = new QParameter();
param->setName(QStringLiteral("diffuseColor"));
param->setValue(QColor::fromRgbF(0.0f, 0.0f, 1.0f, 1.0f));

// Alternatively you can create and set a QParameter this way
QParameter *param2 = new QParameter(QStringLiteral("diffuseColor"), QColor::fromRgbF(0.0f, 0.0f, 1.0f, 1.0f));

// Such QParameters will work with the following GLSL uniform shader declarations
// uniform vec4 diffuseColor;
// uniform vec3 diffuseColor;
// uniform vec2 diffuseColor;
// uniform float diffuseColor;

注: QParameterでラップされた値が、実際のユニフォームが期待する形式に確実に変換できることを確認するために、ある程度の 注意が必要です。実際のシェーダーのユニフォームがfloat型であるにもかかわらず、intとして格納された値を指定すると、未定義の挙動を引き起こす可能性があります。

注: 対象となるユニフォームが配列の場合 、名前にはユニフォームの名前の末尾に [0] を付加したものを指定する必要があります。

注:QParameter ノードは無効にすることはできません。

QParameter *param = new QParameter();
QVariantList values = QVariantList() << 0.0f << 1.0f << 2.0f << 3.0f << 4.0f << 883.0f << 1340.0f << 1584.0f;

param->setName(QStringLiteral("diffuseValues[0]"));
param->setValue(values);

// Matching GLSL shader uniform  declaration
// uniform float diffuseValues[8];

テクスチャのサポートに関しては、QParameter の値を、シェーダーのユニフォームのサンプラー型に一致する適切なQAbstractTexture サブクラスに設定する必要があります。

QTexture2D *texture = new QTexture2D();
...
QParameter *param = new QParameter();
param->setName(QStringLiteral("diffuseTexture"));
param->setValue(QVariant::fromValue(texture));

// Works with the following GLSL uniform shader declaration
// uniform sampler2D diffuseTexture

QAbstractTextureも参照してください 。

[deprecated] class Qt3DRender::QPickEvent

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

これは、QObjectPicker コンポーネントのシグナルのほとんどにおいて、選択が成功した際にパラメータとして受け取られます。

QPickingSettings 、QPickTriangleEvent 、およびQObjectPickerも参照してください 。

[deprecated] class Qt3DRender::QPickLineEvent

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

QPickEventも参照してください 。

[deprecated] class Qt3DRender::QPickPointEvent

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

QPickEventも参照してください 。

[deprecated] class Qt3DRender::QPickTriangleEvent

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

QPickingSettings::pickMode() が `QPickingSettings::TrianglePicking` に設定されている場合、QObjectPicker のシグナルには QPickTriangleEvent のインスタンスが送信されます。

これには、ピックされた三角形の詳細情報が含まれます。

注: インデックス付きレンダリングの場合 、点のインデックスはインデックスの配列ではなく、座標の配列を基準としています。

QPickingSettings 、QPickEvent 、およびQObjectPickerも参照してください 。

[since 6.0, deprecated] class Qt3DRender::QPickingProxy

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

ピッキングは、特にメッシュの頂点数が多い場合、処理負荷が高くなりがちです。QPickProxy を使用すると、ピッキング用に(通常はプリミティブ数が少ない)代替のジオメトリを提供しつつ、レンダリングにはGeometryRenderer インスタンスを使用することができます。

注: アプリケーションで、ピッキング座標がレンダリングされたメッシュと一致する必要がある場合は、QPickingProxyを使用しないでください 。

注: ピッキングアルゴリズムでは 、バウンディングボリューム階層を使用して、バウンディングボリュームがピッキングレイと交差しないエンティティを最適化して除外します。この階層では、プロキシのバウンディングボリュームではなく、レンダリングされるエンティティのバウンディングボリューム(または QBoundingVolume コンポーネントを使用して明示的に設定されたもの)が使用されます。

このクラスは Qt 6.0 で導入されました。

[deprecated] class Qt3DRender::QPickingSettings

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

ピッキング設定は、エンティティのピッキング処理方法を決定します。エンティティのピッキングに関する詳細については、QObjectPicker およびQRayCaster のコンポーネントドキュメントを参照してください。

QObjectPicker コンポーネントを使用する場合、ピッキングはマウスイベントによってトリガーされます。

QRayCaster またはQScreenRayCaster コンポーネントを使用する場合、ピッキングはアプリケーションによって明示的にトリガーすることができます。

どちらの場合も、シーン内に光線が投射され、その光線と交差するジオメトリが検出されます。

関連項目: QObjectPicker 、QPickEvent 、QPickTriangleEvent 、QRayCaster 、およびQScreenRayCaster 。

[deprecated] class Qt3DRender::QPointLight

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

ポイントライトとは、単一の点から全方向に光を放射する光源のことです。概念的には、これは一般的な電球が発する光に似ています。

ポイントライトは、光の強度が距離とともにどのように減衰するかを記述するために、3つの減衰係数を使用します。これらの係数は、総減衰量を計算する際に組み合わせて使用されるように設計されています。Qt3D Extras のマテリアルでは、以下の式が使用されます。ここで、distance は光源からレンダリングされる表面までの距離です。

totalAttenuation = 1.0 / (constantAttenuation + (linearAttenuation * distance) + (quadraticAttenuation * distance * distance));

カスタムマテリアルでは、これらの係数を異なる方法で解釈することも可能です。

[deprecated] class Qt3DRender::QPointSize

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

sizeMode プロパティがSizeMode::Fixed に設定されている場合、利用可能な場合はglPointSize()を使用して値が設定されます。SizeMode::Programmable を使用する場合、gl_PointSizeはシェーダープログラム内で設定する必要があります。その場合、このRenderState に渡された値は無視されます。

[deprecated] class Qt3DRender::QPolygonOffset

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QPolygonOffset クラスは、深度テストおよび深度書き込みの前に、フラグメントの深度値にオフセットを加えます。このオフセットを使用することで、デカールなど、深度値が非常に近いポリゴンをレンダリングする際の Z ファイティングを回避できます。

[deprecated] class Qt3DRender::QProximityFilter

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QProximityFilter を使用すると、あるエンティティから所定の距離閾値以内に配置されたエンティティを選択し、レンダリングすることができます。

[deprecated] class Qt3DRender::QRasterMode

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QRasterMode クラスは、レンダリング時にプリミティブのラスタライズ処理を制御するために使用されます。これを使用することで、プリミティブを点として表示するか、エッジとして表示するか、あるいは塗りつぶすかを選択できます。

注: OpenGL ES 2.0 プラットフォームでのレンダリングでは、これは サポートされていません。

関連項目: QAlphaTest およびQStencilTest 。

[deprecated] class Qt3DRender::QRayCaster

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

3Dレイは、起点、方向、長さによって定義されます。このレイは、所属するエンティティに適用された変形の影響を受けます。

コンポーネントが有効である限り、レイキャスティングのテストは毎フレーム実行されます。hits プロパティには、交点のリストが更新されます。

関連項目: QAbstractRayCaster 、QScreenRayCaster 、およびQNoPicking 。

[deprecated] class Qt3DRender::QRayCasterHit

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QRayCasterHit Qt3DRender::QRayCaster または コンポーネントを使用してモデルにレイを投射した際に、ヒットが成功した詳細情報を格納します。Qt3DRender::QScreenRayCaster

Qt3DRender::QRayCaster 、Qt3DRender::QScreenRayCaster 、およびQt3DRender::QPickingSettingsも参照してください 。

[deprecated] class Qt3DRender::QRenderAspect

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QRenderCapabilities

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QRenderCapabilities は、実行時に利用可能なグラフィックス機能の詳細を提供します。これは、例えばコンピュートシェーダーが利用可能かどうかによって、特定のアルゴリズムでどのコードパスを使用するかを決定するために使用できます。

[deprecated] class Qt3DRender::QRenderCapture

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QRenderCapture は、任意のレンダリング段階でレンダリング結果を画像としてキャプチャするために使用されます。キャプチャはユーザーによって開始される必要があり、キャプチャ要求ごとに 1 枚の画像が返されます。ユーザーは複数のレンダリングキャプチャ要求を同時に発行できますが、1 フレームにつき 1 つの QRenderCapture インスタンスに対して 1 つの要求のみが処理されます。

[deprecated] class Qt3DRender::QRenderCaptureReply

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QRenderCapture::requestCapture から画像を受け取るオブジェクトです。

[deprecated] class Qt3DRender::QRenderPass

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QRenderPass は、Qt3DRender::QTechnique によって使用される単一のレンダリングパス(シェーダープログラムの実行インスタンス)を指定します。レンダリングパスは、Qt3DRender::QShaderProgram 、Qt3DRender::QFilterKey オブジェクトのリスト、Qt3DRender::QRenderState オブジェクトのリスト、およびQt3DRender::QParameter オブジェクトのリストで構成されます。

QRenderPassは、参照されているQFilterKey ノードのうち少なくとも1つがQRenderPassFilter 内のQFilterKey ノードのいずれかと一致する場合、またはQFilterKey ノードが指定されておらず、かつFrameGraph内にQRenderPassFilter が存在しない場合に、指定されたQRenderState およびQParameter ノードを使用してQShaderProgram を実行します。

QRenderPassがQParameter を定義している場合、実行時にそのパスに関連付けられたQTechnique 、QEffect 、QMaterial 、QTechniqueFilter 、QRenderPassFilter のいずれかに同名のQParameter が存在すれば、それによって上書きされます。それでも、適切なデフォルト値を定義する上で有用な場合があります。

レンダリング時には、FrameGraphの各リーフノードについて、そのFrameGraphブランチ内のすべてのQRenderStateSet ノードによって定義された状態を累積することで、ベースのレンダリング状態が記録されます。各QRenderPassは、独自のQRenderState ノードを指定することで、このベースのレンダリング状態を上書きすることができます。

// Create the render passes
QRenderPass *pass = new QRenderPass();

// Create shader program
QShaderProgram *glShader = new QShaderProgram();

// Set the shader on the render pass
pass->setShaderProgram(glShader);

// Create a FilterKey
QFilterKey *filterKey = new QFilterKey();
filterKey->setName(QStringLiteral("name"));
fitlerKey->setValue(QStringLiteral("zFillPass"));

// Add the FilterKey to the pass
pass->addFilterKey(filterKey);

// Create a QParameter
QParameter *colorParameter = new QParameter(QStringLiteral("color"), QColor::fromRgbF(0.0f, 0.0f, 1.0f, 1.0f));

// Add parameter to pass
pass->addParameter(colorParameter);

// Create a QRenderState
QDepthTest *depthTest = new QDepthTest();

// Add the render state to the pass
pass->addRenderState(depthTest);

QRenderPassFilter 、QFilterKey 、QParameter 、QRenderState 、QEffect 、およびQTechniqueも参照してください 。

[deprecated] class Qt3DRender::QRenderPassFilter

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QRenderPassFilter FrameGraphノードは、描画対象としてどのQt3DRender::QRenderPass オブジェクトを選択するかを指定するために使用されます。QRenderPassFilterは、Qt3DRender::QFilterKey オブジェクトとQt3DRender::QParameter オブジェクトのリストを指定します。FrameGraphにQRenderPassFilterが存在する場合、Qt3DRender::QFilterKey オブジェクトがQRenderPassFilter内のキーと一致するQRenderPass オブジェクトのみがレンダリング対象として選択されます。 QRenderPassFilterが存在しない場合、すべてのQRenderPass オブジェクトがレンダリング対象として選択されます。リスト内のパラメータは、シェーダーパラメータの値を設定するために使用できます。QRenderPassFilter内のパラメータは、QTechniqueFilter 、QMaterial 、QEffect 、QTechnique 、およびQRenderPass 内のパラメータよりも優先されます。

[deprecated] class Qt3DRender::QRenderSettings

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QRenderSettings コンポーネントは、シーンのルートエンティティのコンポーネントとして設定する必要があります。このコンポーネントは、レンダリングポリシーやピッキング設定を指定するほか、アクティブなFrameGraph をホストします。

[deprecated] class Qt3DRender::QRenderState

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QRenderState クラスは、すべてのレンダリング状態の抽象基底クラスです。QRenderStateを直接インスタンス化することはできず、そのサブクラスを通じてインスタンス化する必要があります。

[deprecated] class Qt3DRender::QRenderStateSet

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QRenderPass に設定できるマテリアルごとの状態とは異なり、QRenderStateSetに設定された状態はグローバルに適用されます。デフォルトでは、空のQRenderStateSetを指定すると、実行時にすべてのレンダリング状態が無効になります。QRenderState 状態を明示的に追加すると、実行時にそのレンダリング状態が有効になります。

RenderStateSet は、アクティブなフレームグラフに追加されると有効になります:

// using namespace Qt3DRender;

Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();

QRenderSettings *renderSettings = new QRenderSettings();

QViewport *viewport = new QViewport();
QCameraSelector *cameraSelector = new QCameraSelector(viewport);

QClearBuffers *clearBuffers = new QClearBuffers(cameraSelector);
clearBuffers->setBuffers(QClearBuffers::ColorDepthBuffer);

QRenderStateSet *renderStateSet = new QRenderStateSet(cameraSelector);
QCullFace *cullFace = new QCullFace(renderStateSet);
cullFace->setMode(QCullFace::Front);
renderStateSet->addRenderState(cullFace);

renderSettings->setActiveFrameGraph(viewport);

rootEntity->addComponent(renderSettings);

「 QRenderState 」および「QRenderPass 」も参照してください 。

[deprecated] class Qt3DRender::QRenderSurfaceSelector

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

Qt3DRender::QRenderSurfaceSelector を使用すると、Qt3D がコンテンツをレンダリングするサーフェスを選択できます。サーフェスには、ウィンドウサーフェスとオフスクリーンサーフェスの2種類があります。オフスクリーンサーフェスを使用する場合、externalRenderTargetSize を使用してサーフェスの実際のサイズを指定します。

システムでDPIスケーリングが使用されている場合、マウスイベントで使用される論理的なサーフェスサイズと、サーフェスの実際の「物理的」サイズとは異なる場合があります。surfacePixelRatio は、論理サイズを物理サイズに変換するための係数です。

「 QWindow 」、「QOffscreenSurface 」、および「QSurface 」も参照してください 。

[deprecated] class Qt3DRender::QRenderTarget

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QRenderTarget は、Qt3DRender::QRenderTargetOutput オブジェクトで構成されており、これらはレンダリングターゲットがレンダリングを行うバッファを指定します。ユーザーは、異なるアタッチメントポイントに複数のテクスチャをアタッチすることで、MRT(Multiple Render Targets)を指定できます。同じアタッチメントポイントに複数のテクスチャをアタッチしようとすると、結果は未定義となります。 レンダリング時には、Qt3DRender::QRenderTargetSelector で指定された描画バッファのみが使用されます。

[deprecated] class Qt3DRender::QRenderTargetOutput

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QRenderTargetOutput は、レンダリングターゲットにアタッチされるテクスチャのアタッチメントポイントとパラメータを指定します。アタッチメントポイントに加え、テクスチャのミップレベル、レイヤー、キューブマップの面を指定することができます。QRenderTargetOutput にアタッチされるテクスチャは、指定されたパラメータと互換性がある必要があります。

注:Left および Right アタッチメントポイントは特別な値です。これらは、ステレオレンダリングに使用されるバックバッファのいずれかを指すレンダターゲットオブジェクトではありません。

[deprecated] class Qt3DRender::QRenderTargetSelector

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QRenderTargetSelector は、FrameGraphのアクティブなQt3DRender::QRenderTarget を選択するために使用されます。FrameGraphにQRenderTargetSelectorが存在する場合、レンダリングはQt3DRender::QRenderSurfaceSelector で指定されたサーフェスではなく、QTextureオブジェクトまたはドローバッファへ行われます。

[deprecated] class Qt3DRender::QSceneLoader

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

3Dソースファイルが指定されると、Qt3DRender::QSceneLoader はそのファイルを解析し、適切なQt3DRender::QGeometryRenderer 、Qt3DCore::QTransform 、およびQt3DRender::QMaterial コンポーネントを持つQt3DCore::QEntity オブジェクトのツリーを構築しようとします。

ローダーは、モデルファイルのプロパティに基づいて、使用する最適なマテリアルを決定しようとします。カスタムマテリアルを使用したい場合は、ツリーを走査し、関連付けられているデフォルトのマテリアルを自分のマテリアルに置き換える必要があります。

その名前が示す通り、Qt3DRender::QSceneLoader はシーンのサブツリー全体を読み込みます。単一のジオメトリを読み込みたい場合は、代わりにQt3DRender::QMesh を使用してください。

Qt3DRender::QSceneLoader 内部的には、多種多様な3Dファイル形式をサポートするためにプラグインに依存しています。以下は、Qt3Dがサポートする形式の一覧です。

注:この コンポーネントを 複数の `Qt3DCore::QEntity ` インスタンス間で共有しないでください。未定義の挙動が発生します。

「 Qt3DRender::QMesh 」および「Qt3DRender::QGeometryRenderer 」も参照してください 。

[deprecated] class Qt3DRender::QScissorTest

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QScissorTest クラスは、scissor test を有効にします。これにより、left、bottom、width、height プロパティで指定された画面の矩形領域外にあるフラグメントが除外されます。

[deprecated] class Qt3DRender::QScreenRayCaster

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

QScreenRayCaster を使用すると、画面座標空間の座標を指定してレイキャスティングの判定を行うことができます。これにより、近平面と遠平面の間に実際の 3D レイが構築されます。

QRayCaster およびQNoPickingも参照してください 。

[deprecated] class Qt3DRender::QSeamlessCubemap

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

状態セットに含まれている場合、GL_ARB_seamless_cubemap 拡張機能(利用可能な場合)によって提供されるシームレスなキューブマップテクスチャフィルタリングを有効にします。

[deprecated] class Qt3DRender::QSetFence

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

フェンスを使用すると、GPUとCPUのワークロードを同期させることができます。GPUコマンドは通常、ノンブロッキングです。コマンドが発行されると、コマンドバッファに挿入され、後でGPUによって読み込まれます。場合によっては、ハードウェアによってコマンドが確実に実行されたことが確認できてからでないと、処理を続行したり、特定のコマンドを発行したりできないことがあります。 フェンスは、これを実現する手段です。これは、Qt3Dでサードパーティ製のエンジンを使用する場合に特に重要です。Qt3Dは、他のエンジンのコマンドによるリソースの変更が完了したことが確認できた場合にのみ、共有リソースにアクセスすべきです。

QSetFenceは、コマンドストリームにフェンスを挿入するFrameGraphノードです。これは、QWaitFence と組み合わせて使用するか、または基になるハンドルを抽出することで利用できます。

handleプロパティは、レンダラーが基盤となるフェンスリソースを作成すると更新されます。 ハンドルは、シグナル未発生の状態にある限り有効です。シグナル発生状態になると、ハンドルは破棄され、新しいハンドルが作成されます。つまり、フェンスがシグナル発生状態になるまでの時間によっては、同じハンドルが数フレームにわたって使用される可能性があります。

[deprecated] class Qt3DRender::QShaderData

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

注: QShaderDataをサブクラス化し、プロパティを追加する場合 、内部のQt3DRender::QShaderData をネストする必要があるときは、プロパティのデータ型をサブクラスの名前ではなくQt3DRender::QShaderData*に設定する必要があることに注意してください。

[deprecated] class Qt3DRender::QShaderImage

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

シェーダー内でテクスチャの内容を読み書きできるようにするには、それらを QShaderImage として公開する必要があります。テクスチャは、複数のミップレベル、レイヤー、およびフェイスで構成される場合があります。さらに、QShaderImage を宣言することで、テクスチャの内容のうち、どのレベル、レイヤー、またはフェイスにアクセスしたいかを指定できます。

QShaderImageが正常に機能するためには、QParameter の値として割り当てられ、有効なQt3DRender::QAbstractTexture を参照している必要があります。

参照されるテクスチャが1次元配列、2次元配列、3次元、キューブマップ、キューブマップ配列、または2次元マルチサンプル配列テクスチャである場合、テクスチャレベル全体、あるいはそのテクスチャレベル内の単一のレイヤーやフェイスをバインドすることが可能です。これはlayered プロパティで制御できます。

QShaderImage のサポートは、OpenGL 4 でのみ完全に対応しており、OpenGL ES 3.1 および 3.2 では部分的にのみ対応しています。

OpenGL 4 では、以下の画像タイプがサポートされています:

GLSL タイプOpenGL 型列挙型テクスチャタイプ
image1DGL_IMAGE_1DQTexture1D
image2DGL_IMAGE_2DQTexture2D
image3DGL_IMAGE_3DQTexture3D
image2DRectGL_IMAGE_2D_RECTQTextureRectangle
imageCubeGL_IMAGE_CUBEQTextureCubeMap
imageBufferGL_IMAGE_BUFFERQTextureBuffer
image1DArrayGL_IMAGE_1D_ARRAYQTexture1DArray
image2DArrayGL_IMAGE_2D_ARRAYimageCubeArrayQTexture2DArray
imageCubeArrayGL_IMAGE_CUBE_MAP_ARRAYQTextureCubeMapArray
image2DMSGL_IMAGE_2D_MULTISAMPLEQTexture2DMultisample
image2DMSArrayGL_IMAGE_2D_MULTISAMPLE_ARRAYimage1DMSQTexture2DMultisampleArray
iimage1DGL_INT_IMAGE_1DQTexture1D
iimage2DGL_INT_IMAGE_2DQTexture2D
iimage3DGL_INT_IMAGE_3DQTexture3D
iimage2DRectGL_INT_IMAGE_2D_RECTQTextureRectangle
iimageCubeGL_INT_IMAGE_CUBEQTextureCubeMap
iimageBufferGL_INT_IMAGE_BUFFERQTextureBuffer
iimage1DArrayGL_INT_IMAGE_1D_ARRAYQTexture1DArray
iimage2DArrayGL_INT_IMAGE_2D_ARRAYQTexture2DArray
iimageCubeArrayGL_INT_IMAGE_CUBE_MAP_ARRAYQTextureCubeMapArray
iimage2DMSGL_INT_IMAGE_2D_MULTISAMPLEQTexture2DMultisample
iimage2DMSArrayGL_INT_IMAGE_2D_MULTISAMPLE_ARRAYuimage1DMSQTexture2DMultisampleArray
uimage1DGL_UNSIGNED_INT_IMAGE_1DQTexture1D
uimage2DGL_UNSIGNED_INT_IMAGE_2DQTexture2D
uimage3DGL_UNSIGNED_INT_IMAGE_3DQTexture3D
uimage2DRectGL_UNSIGNED_INT_IMAGE_2D_RECTQTextureRectangle
uimageCubeGL_UNSIGNED_INT_IMAGE_CUBEQTextureCubeMap
uimageBufferGL_UNSIGNED_INT_IMAGE_BUFFERQTextureBuffer
uimage1DArrayGL_UNSIGNED_INT_IMAGE_1D_ARRAYQTexture1DArray
uimage2DArrayGL_UNSIGNED_INT_IMAGE_2D_ARRAYuimageCubeArrayQTexture2DArray
uimageCubeArrayGL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAYQTextureCubeMapArray
uimage2DMSGL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLEQTexture2DMultisample
uimage2DMSArrayGL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAYQTexture2DMultisampleArray

OpenGL ES 3.1 は、以下の画像タイプをサポートしています:

GLSL 型OpenGL 型列挙型テクスチャ・タイプ
image2DGL_IMAGE_2DQTexture2D
image3DGL_IMAGE_3DQTexture3D
imageCubeGL_IMAGE_CUBEQTextureCubeMap
image2DArrayGL_IMAGE_2D_ARRAYQTexture2DArray
iimage2DGL_INT_IMAGE_2DQTexture2D
iimage3DGL_INT_IMAGE_3DQTexture3D
iimageCubeGL_INT_IMAGE_CUBEQTextureCubeMap
iimage2DArrayGL_INT_IMAGE_2D_ARRAYQTexture2DArray
uimage2DGL_UNSIGNED_INT_IMAGE_2DQTexture2D
uimage3DGL_UNSIGNED_INT_IMAGE_3DQTexture3D
uimageCubeGL_UNSIGNED_INT_IMAGE_CUBEQTextureCubeMap
uimage2DArrayGL_UNSIGNED_INT_IMAGE_2D_ARRAYQTexture2DArray

OpenGL ES 3.2 は、OpenGL ES 3.1 のすべての画像タイプに加え、以下のタイプもサポートしています:

GLSL 型OpenGL 型の列挙型テクスチャ型
imageBufferGL_IMAGE_BUFFERQTextureBuffer
imageCubeArrayGL_IMAGE_CUBE_MAP_ARRAYQTextureCubeMapArray
iimageBufferGL_IMAGE_BUFFERQTextureBuffer
iimageCubeArrayGL_INT_IMAGE_CUBE_MAP_ARRAYiimageBufferGL_IMAGE_BUFFERiimageCubeArrayQTextureCubeMapArray
uimageBufferGL_UNSIGNED_INT_IMAGE_BUFFERQTextureBuffer
uimageCubeArrayGL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAYQTextureCubeMapArray

想定される使用例は次のようになります:

Qt3DRender::QTexture2D *tex2D = new Qt3DRender::QTexture2D();
...
Qt3DRender::QMaterial *material = new Qt3DRender::QMaterial();
...
Qt3DRender::QParameter *imageParameter = new Qt3DRender::QParameter();
Qt3DRender::QShaderImage *shaderImage = new Qt3DRender::QShaderImage();

shaderImage->setTexture(tex2D);

imageParameter->setName("imageUniformName");
imageParameter->setValue(QVariant::fromValue(shaderImage));

material->addParameter(imageParamenter);

[deprecated] class Qt3DRender::QShaderProgram

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

シェーダープログラムは、頂点シェーダーやフラグメントシェーダーなど、いくつかの異なるシェーダーで構成されています。

Qt3D は、シェーダーのイントロスペクションフェーズ中にデフォルトのユニフォームが検出された場合、それらを自動的に設定します。

デフォルトのユニフォーム関連する Qt3D パラメータ名GLSL 宣言
ModelMatrixmodelMatrixuniform mat4 modelMatrix;
ViewMatrixviewMatrixuniform mat4 viewMatrix;
投影行列projectionMatrixuniform mat4 projectionMatrix;
ModelViewMatrixmodelViewuniform mat4 modelView;
ViewProjectionMatrixviewProjectionMatrixuniform mat4 ビュー投影行列;
ModelViewProjectionMatrixmodelViewProjection
mvp
uniform mat4 modelViewProjection;
uniform mat4 mvp;
InverseModelMatrixinverseModelMatrixuniform mat4 inverseModelMatrix;
逆ビュー行列逆ビュー行列uniform mat4 inverseViewMatrix;
逆投影行列逆投影行列uniform mat4 inverseProjectionMatrix;
モデルビュー行列の逆行列逆モデルビュー行列uniform mat4 inverseModelView;
逆ビュー投影行列逆ビュー投影行列uniform mat4 inverseViewProjectionMatrix;
逆モデルビュー投影行列逆モデルビュー投影行列uniform mat4 inverseModelViewProjection;
モデル法線行列モデル法線行列uniform mat3 modelNormalMatrix;
ModelViewNormalMatrixmodelViewNormaluniform mat3 modelViewNormal;
ビューポート行列ビューポート行列uniform mat4 ビューポート行列;
逆ビューポート行列inverseViewportMatrixuniform mat4 inverseViewportMatrix;
アスペクト比
(サーフェスの幅 / サーフェスの高さ)
aspectRatioxml-ph-0000@deepl.internal (サーフェスの幅 / サーフェスの高さ)uniform float aspectRatio;
露光exposureuniform float exposure;
ガンマガンマ均一な浮動小数点ガンマ;
時間
(ナノ秒単位)
timeuniform float time;
EyePositioneyePositionuniform vec3 eyePosition;
スキニングパレットskinningPalette[0]const int maxJoints = 100;
uniform mat4 skinningPalette[maxJoints];

RHI サポート

Qt 3D の RHI バックエンドで使用するための GLSL 450 シェーダーコードを記述する場合、デフォルトのユニフォームは 2 つのユニフォーム・バッファ・オブジェクトとして提供されます。

これらのバインディング位置は、RenderView ユニフォームが 0、Command ユニフォームが 1 に設定されます。

#version 450 core

layout(location = 0) in vec3 vertexPosition;

layout(std140, binding = 0) uniform qt3d_render_view_uniforms {
  mat4 viewMatrix;
  mat4 projectionMatrix;
  mat4 uncorrectedProjectionMatrix;
  mat4 clipCorrectionMatrix;
  mat4 viewProjectionMatrix;
  mat4 inverseViewMatrix;
  mat4 inverseProjectionMatrix;
  mat4 inverseViewProjectionMatrix;
  mat4 viewportMatrix;
  mat4 inverseViewportMatrix;
  vec4 textureTransformMatrix;
  vec3 eyePosition;
  float aspectRatio;
  float gamma;
  float exposure;
  float time;
  float yUpInNDC;
  float yUpInFBO;
};

layout(std140, binding = 1) uniform qt3d_command_uniforms {
  mat4 modelMatrix;
  mat4 inverseModelMatrix;
  mat4 modelViewMatrix;
  mat3 modelNormalMatrix;
  mat4 inverseModelViewMatrix;
  mat4 modelViewProjection;
  mat4 inverseModelViewProjectionMatrix;
};

void main()
{
    gl_Position = (projectionMatrix * viewMatrix * modelMatrix * vertexPosition);
}

ユーザー定義のユニフォームバッファオブジェクトについては、バインディングを2以降から開始するか、`auto` を使用して、Qt 3D に自動的にバインディングを決定させてください。異なるシェーダステージ間で一貫性を保つようにしてください。

#version 450 core

layout(std140, binding = auto) uniform my_uniforms {
  vec4 myColor;
};

layout(location=0) out vec4 fragColor;

void main()
{
    fragColor = myColor;
}

ユニフォームへの値の渡し方については、変更はありません。

上記の例の場合、myColorの設定は次のように行うことができます。

QParameter *parameter = new QParameter();
parameter->setName("myColor");
parameter->setValue(QVariant::fromValue(QColor(Qt::blue)));

テクスチャについては、引き続き独立したユニフォームとして定義する必要があります。

#version 450 core

layout(binding=0) uniform sampler2D source;

layout(location=0) out vec4 fragColor;

void main()
{
    fragColor = texture(source, vec2(0.5, 0.5));
}

[deprecated] class Qt3DRender::QShaderProgramBuilder

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

シェーダープログラムビルダーは、シェーダーコードを生成するために使用されるいくつかの異なるシェーダーグラフで構成されています。

生成されたシェーダーコードのキャッシュが管理されます。生成されたシェーダーは、デフォルトでQStandardPaths::writableLocation (QStandardPaths::TempLocation )に保存されます。このパスは、環境変数 QT3D_WRITABLE_CACHE_PATH を有効な書き込み可能なパスに設定することで上書きできます。

環境変数 QT3D_DISABLE_SHADER_CACHE を設定することで、キャッシュの使用を無効にできます。

ほとんどの場合、グラフに加えられた変更はQt 3D によって検出され、新しいキャッシュエントリが生成されます。 これが行われないケースの一つは、グラフに含まれるコードスニペットが変更された場合です。これを回避するには、キャッシュディレクトリをクリアするか、環境変数 QT3D_REBUILD_SHADER_CACHE を設定して、シェーダーコードの再生成を強制することができます。

[deprecated] class Qt3DRender::QSharedGLTexture

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt 3D が使用するレンダリングモードに応じて、共有コンテキストは次のいずれかになります。

  • Qt 3D にレンダリングを任せる場合は `qt_gl_global_share_context` になります。QApplication クラスで `Qt::AA_ShareOpenGLContexts ` 属性を設定すると、QOpenGLWidget インスタンスのコンテキストは自動的に `qt_gl_global_share_context` と共有されるようになります。
  • QtQuick シーンからの共有コンテキスト。ただし、5.13 の時点では qt_gl_global_share_context となっているため、その共有コンテキストを制御するには、QWindow をサブクラス化するか、QtQuickRenderControl を使用する必要がある場合があります。

Qt 3D レンダラーとコンテキストを共有するサードパーティ製のエンジンは、Qt 3D のテクスチャによって参照されるテクスチャ ID を指定できるようになりました。

テクスチャプロパティの指定を省略することも可能です。その場合、Qt 3D は実行時にそれらの値を判別しようとします。プロパティが分かっている場合は、もちろん指定することもでき、Qt 3D の余分な処理を回避できます。

カスタムマテリアルやシェーダーを使用している場合は、使用するサンプラーのタイプを正しく指定する必要がある点に注意してください。

[deprecated] class Qt3DRender::QSortPolicy

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QSortPolicy クラスは、FrameGraphで使用されるソートタイプを保持します。ソートタイプは、描画順序を決定するために、描画前に描画可能なエンティティがどのようにソートされるかを決定します。FrameGraphにQSortPolicyが存在する場合、ソートメカニズムはsortTypes リストによって決定されます。 複数のソートタイプを同時に使用することができます。FrameGraphにQSortPolicyが存在しない場合、エンティティはエンティティ階層に現れる順序で描画されます。

[deprecated] class Qt3DRender::QSpotLight

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

スポットライトとは、特定の方向に向かって円錐状の光を放射する光源のことです。

スポットライトは、距離に伴って光の強度がどのように減衰するかを記述するために、3つの減衰係数を使用します。これらの係数は、総減衰量を計算する際に組み合わせて使用されるよう設計されています。Qt3D Extrasのマテリアルでは、以下の式が使用されます。ここで、distanceは光源からレンダリングされる表面までの距離です:

totalAttenuation = 1.0 / (constantAttenuation + (linearAttenuation * distance) + (quadraticAttenuation * distance * distance));

カスタムマテリアルでは、これらの係数を異なる方法で解釈することも可能です。

[deprecated] class Qt3DRender::QStencilMask

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QStencilMask クラスは、ステンシルテスト後のステンシル値に対する書き込みマスクを指定します。マスクは、表向きのポリゴンと裏向きのポリゴンで個別に指定できます。フラグメントのステンシル値は、ステンシルバッファに書き込まれる前に、このマスクとAND演算が行われます。

Qt3DRender::QStencilTestも参照してください 。

[deprecated] class Qt3DRender::QStencilOperation

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QStencilOperation クラスは、表側および裏側のポリゴンに対するステンシル演算を指定します。ステンシル演算は、ステンシルテストおよび深度テストに合格または不合格となった場合に、フラグメントに対してどのような処理が行われるかを制御します。

「Qt3DRender::QStencilTest」も参照してください 。

[deprecated] class Qt3DRender::QStencilOperationArguments

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QStencilOperationArguments クラスは、ステンシル演算の引数を指定します。

「Qt3DRender::QStencilOperation」も参照してください 。

[deprecated] class Qt3DRender::QStencilTest

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

Qt3DRender::QStencilTest クラスは、ステンシルテストの引数を指定します。ステンシルテストは、ステンシルテスト関数、ステンシルテストマスク、およびステンシル基準値の3つの引数で構成されます。QStencilTestを使用すると、これらの引数を、前面および背面のポリゴンごとに個別に設定することができます。

Qt3DRender::QStencilMask およびQt3DRender::QStencilOperationも参照してください 。

[deprecated] class Qt3DRender::QStencilTestArguments

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QStencilTestArguments クラスは、ステンシルテストの引数を指定します。

[deprecated] class Qt3DRender::QSubtreeEnabler

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

QFrameGraphNodes は、enabled プロパティを使用して個別に有効化・無効化できますが、パス全体をオンまたはオフにする必要がある場合、この操作は煩雑になりがちです。QSubtreeEnabler は、このユースケースを簡単に実現するための便利なノードであり、1つのスイッチですべての子ノードを制御できるようにします。

QSubtreeEnablerはデフォルトで有効になっています。

[deprecated] class Qt3DRender::QTechnique

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QTechnique は、Qt3DRender::QRenderPass オブジェクト、Qt3DRender::QFilterKey オブジェクト、Qt3DRender::QParameter オブジェクト、およびQt3DRender::QGraphicsApiFilter のセットを指定し、これらが組み合わさって、指定されたグラフィックスAPIがレンダリング可能なレンダリング手法を定義します。 フィルターキーは、Qt3DRender::QTechniqueFilter によって、FrameGraph の特定の部分で特定のテクニックを選択するために使用されます。QTechnique で定義されたQParameter は、QRenderPass で定義された(同名の)パラメータを上書きしますが、QRenderPassFilter 、QTechniqueFilter 、QMaterial 、およびQEffect 内のパラメータによって上書きされます。

複数のグラフィックスAPIバージョンをターゲットとするQEffect を作成する場合、ターゲットとするGLバージョンのいずれかに合わせてgraphicsApiFilter が設定されたQTechniqueノードを複数作成すると便利です。 実行時、Qt3D レンダラーは、サポートされているグラフィックス API のバージョン、および(指定されている場合)FrameGraph 内の特定のQTechniqueFilter を満たすQFilterKey ノードに基づいて、最も適切な QTechnique を選択します。

注: レンダリングのグラフィックスAPIとしてOpenGLを使用する場合 、Qt3Dは実行時にQSurfaceFormat::defaultFormat()によって返されるQSurfaceFormat に基づいて、利用可能なGLバージョンの中で最も適切なものを選択します。QSurfaceFormat をカスタマイズする必要がある場合は、QSurfaceFormat::setDefaultFormat()を使用して適用することを忘れないでください。ビュー上でQSurfaceFormat を設定しても、Qt3D関連のレンダリングにはおそらく影響しません。

注:QTechnique ノードは無効にすることはできません。

QTechnique *gl3Technique = new QTechnique();

// Create the render passes
QRenderPass *firstPass = new QRenderPass();
QRenderPass *secondPass = new QRenderPass();

// Add the passes to the technique
gl3Technique->addRenderPass(firstPass);
gl3Technique->addRenderPass(secondPass);

// Set the targeted GL version for the technique
gl3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
gl3Technique->graphicsApiFilter()->setMajorVersion(3);
gl3Technique->graphicsApiFilter()->setMinorVersion(1);
gl3Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::CoreProfile);

// Create a FilterKey
QFilterKey *filterKey = new QFilterKey();
filterKey->setName(QStringLiteral("name"));
fitlerKey->setValue(QStringLiteral("zFillPass"));

// Add the FilterKey to the Technique
gl3Technique->addFilterKey(filterKey);

// Create a QParameter
QParameter *colorParameter = new QParameter(QStringLiteral("color"), QColor::fromRgbF(0.0f, 0.0f, 1.0f, 1.0f));

// Add parameter to technique
gl3Technique->addParameter(colorParameter);

関連項目: QEffect 、QRenderPass 、およびQTechniqueFilter 。

[deprecated] class Qt3DRender::QTechniqueFilter

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

Qt3DRender::QTechniqueFilter は、エンティティのレンダリング時にFrameGraphが使用するテクニックを指定します。QTechniqueFilterは、Qt3DRender::QFilterKey オブジェクトとQt3DRender::QParameter オブジェクトのリストを指定します。FrameGraphにQTechniqueFilterが存在する場合、リスト内のキーと一致するテクニックのみがレンダリングに使用されます。 リスト内のパラメータは、シェーダパラメータの値を設定するために使用できます。QTechniqueFilter内のパラメータは、QMaterial 、QEffect 、QTechnique 、およびQRenderPass 内のパラメータを上書きしますが、QRenderPassFilter 内のパラメータによって上書きされます。

[deprecated] class Qt3DRender::QTexture1D

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QTexture1DArray

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QTexture2D

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QTexture2DArray

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QTexture2DMultisample

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QTexture2DMultisampleArray

このクラスは非推奨です。新しいコードでの使用は強く控えることをお勧めします。

[deprecated] class Qt3DRender::QTexture3D

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QTextureBuffer

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QTextureCubeMap

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QTextureCubeMapArray

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QTextureData

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QTextureDataUpdate

このクラスは非推奨です。新しいコードでの使用は強く推奨しません。

実際のデータ内容は、QTextureImageDataPtr メンバーに格納されています。追加のメンバーを使用することで、コンテンツ更新の x、y、z オフセットに加え、対象となるレイヤー、mipLevel、および面を指定することができます。

QAbstractTextureも参照してください 。

[deprecated] class Qt3DRender::QTextureImage

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

このクラスには、OpenGLテクスチャにデータを適切な位置に読み込むために必要な情報(ミップマップレベル、レイヤー、キューブの面、ソースURL)が含まれています。

[deprecated] class Qt3DRender::QTextureImageData

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QTextureImageDataGenerator

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

QTextureImageDataGenerator は、QAbstractTexture 向けのデータプロバイダです。QTextureImageDataGenerator を使用することで、Qt3D にテクスチャ画像データを読み込む方法をさらに追加できるほか、ユーザー定義のフォーマットや、Qt3D がネイティブでサポートしていないフォーマットにも対応できます。 データは、テクスチャに読み込まれるデータを含むQTextureImageDataPtr によって返されます。QTextureImageDataGeneratorは、バックエンドのAspectジョブによって実行されます。

[deprecated] class Qt3DRender::QTextureLoader

このクラスは非推奨となっています。新しいコードでの使用は強く推奨しません。

[deprecated] class Qt3DRender::QTextureRectangle

このクラスは非推奨となっています。新しいコードでの使用は強くお勧めしません。

[deprecated] class Qt3DRender::QTextureWrapMode

このクラスは非推奨となっています。新しいコードでの使用は強く控えることをお勧めします。

[deprecated] class Qt3DRender::QViewport

このクラスは非推奨となっています。新しいコードでの使用は強く推奨しません。

Qt3DRender::QViewport シーンのこの部分は、Qt3D がレンダリングを行うレンダリング面のどの領域かを指定します。ビューポートの外側の領域は変更されません。また、ガンマ値など、そのビューポート内のレンダリングに関するグローバルパラメータも制御します。

[deprecated] class Qt3DRender::QWaitFence

このクラスは非推奨です。新しいコードでの使用は強くお勧めしません。

フェンスを使用すると、GPUとCPUのワークロードを同期させることができます。GPUコマンドは通常、ノンブロッキングです。コマンドが発行されると、コマンドバッファに挿入され、後でGPUによって読み込まれます。場合によっては、ハードウェアによってコマンドが確実に実行されたことを確認してからでないと、処理を続行したり、特定のコマンドを発行したりできないことがあります。 フェンスは、これを実現するための手段です。これは、Qt3Dでサードパーティ製エンジンを使用する場合に特に重要です。Qt3Dは、他のエンジンのコマンドによるリソースの変更が完了したことが確認できた場合にのみ、共有リソースにアクセスすべきです。

QWaitFenceは、シグナルが送信されるまで待機し、その後で後続のコマンドがコマンドストリームに挿入されるように強制するFrameGraphノードです。これはQSetFence と組み合わせて使用でき、待機時間やCPU側でブロックするかどうかを設定するプロパティを備えています。

注: Qt 3D は 、描画呼び出しを発行する前に、GPUリソース(テクスチャ、シェーダー、バッファ)をアップロードします。

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