QMultiSampleAntiAliasing Class

class Qt3DRender::QMultiSampleAntiAliasing

マルチサンプル・アンチエイリアスを有効にする。もっと見る...

Header: #include <QMultiSampleAntiAliasing>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3drender)
target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: QT += 3drender
In QML: MultiSampleAntiAliasing
Inherits: Qt3DRender::QRenderState
Status: Deprecated

パブリック関数

QMultiSampleAntiAliasing(Qt3DCore::QNode *parent = nullptr)

詳細説明

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)が呼び出されます。

メンバ関数ドキュメント

[explicit] QMultiSampleAntiAliasing::QMultiSampleAntiAliasing(Qt3DCore::QNode *parent = nullptr)

コンストラクタは、指定されたparent で新しいQMultiSampleAntiAliasing::QMultiSampleAntiAliasing インスタンスを作成します。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。