多样本抗锯齿 QML 类型

启用多样本抗锯齿。更多信息...

导入语句导入 Qt3D.Render 2.7
实例化 QMultiSampleAntiAliasing
继承

RenderState

详细说明

多样本抗锯齿类型启用多样本抗锯齿。

它可以添加到渲染通道

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

渲染状态集

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 时,如果已将 MultiSampleAntiAliasing 添加到渲染状态,则将调用 glEnable(GL_MULTISAMPLE)。

© 2024 The Qt Company Ltd. 本文档的贡献权归原作者所有。本提供的文档按 Free Software Foundation 发布的 GNU 自由文档许可 第 1.3 版 的条款进行许可。Qt 和相应的标志是芬兰和/或其他国家的 The Qt Company Ltd. 的商标。所有其他商标均为其所有者的财产。