Spec-Zone.ru › Qt

Тип QML MultiSampleAntiAliasing

Включить сглаживание с помощью нескольких выборок. Подробнее...

Заявление импорта: import Qt3D.Render
С момента: Qt 5.7
Создает: QMultiSampleAntiAliasing
Наследует:

RenderState

  • Список всех членов, включая унаследованные члены

Подробное описание

Тип MultiSampleAntiAliasing включает сглаживание с помощью нескольких выборок.

Его можно добавить к RenderPass:

RenderPass {
    shaderProgram: ShaderProgram {
        // ...
    }
    renderStates: [
        MultiSampleAntiAliasing {}
    ]
}

Или к RenderStateSet:

RenderStateSet {
    renderStates: [
        MultiSampleAntiAliasing {}
    ]
}

Для того, чтобы сглаживание с помощью нескольких выборок сработало, целевой рендеринг должен быть выделен с включенным сглаживанием с помощью нескольких выборок:

RenderTarget {
    attachments: [
        RenderTargetOutput {
            attachmentPoint: RenderTargetOutput.Color0
            texture: Texture2DMultisample {
                width: 1024
                height: 1024
                format: Texture.RGBA8_UNorm
            }
        },
        RenderTargetOutput {
            attachmentPoint: RenderTargetOutput.DepthStencil
            texture: Texture2DMultisample{
                width: 1024
                height: 1024
                format: Texture.D24S8
            }
        }
    ]
}

Кроме того, код шейдера должен использовать типы выборки сглаживания с помощью нескольких выборок и texelFetch() вместо texture().

Кроме того, код шейдера должен использовать типы выборки сглаживания с помощью нескольких выборок и texelFetch() вместо texture().

Например, если у вас есть код вроде

#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;
}

Примечание: При использовании OpenGL в качестве графического API будет вызван glEnable(GL_MULTISAMPLE), если MultiSampleAntiAliasing был добавлен в состояния рендеринга.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qml-qt3d-render-multisampleantialiasing.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API