- class QMultiSampleAntiAliasing#
启用多样本抗锯齿。 更多...
摘要#
方法#
def
__init__()
注意
本文档可能包含从 C++ 自动翻译到 Python 的代码片段。我们始终欢迎对代码片段的翻译贡献。如果您发现翻译有问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单的方式来告知我们。
详细描述#
QMultiSampleAntiAliasing
类使能多样本抗锯齿。可以通过调用
addRenderState()
将其添加到QRenderPass
。QRenderPass *renderPass = new QRenderPass(); QMultiSampleAntiAliasing *msaa = new QMultiSampleAntiAliasing(); renderPass->addRenderState(msaa);
或者通过调用
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);
此外,着色器代码必须使用多样本采样器类型和 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 时,如果
QMultiSampleAntiAliasing
已添加到渲染状态中,则会调用 glEnable(GL_MULTISAMPLE)。- __init__([parent=None])#
- 参数:
parent –
QNode
构造函数创建一个新的具有指定
parent
的QMultiSampleAntiAliasing
实例。