QRhiTextureRenderTargetDescription Class

렌더링 대상의 색상과 깊이 또는 깊이/스텐실 어태치먼트를 설명합니다. 더 보기...

헤더: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
이후: Qt 6.6

공용 함수

QRhiTextureRenderTargetDescription()
QRhiTextureRenderTargetDescription(const QRhiColorAttachment &colorAttachment)
QRhiTextureRenderTargetDescription(const QRhiColorAttachment &colorAttachment, QRhiRenderBuffer *depthStencilBuffer)
QRhiTextureRenderTargetDescription(const QRhiColorAttachment &colorAttachment, QRhiTexture *depthTexture)
const QRhiColorAttachment *cbeginColorAttachments() const
const QRhiColorAttachment *cendColorAttachments() const
const QRhiColorAttachment *colorAttachmentAt(qsizetype index) const
qsizetype colorAttachmentCount() const
(since 6.8) QRhiTexture *depthResolveTexture() const
QRhiRenderBuffer *depthStencilBuffer() const
QRhiTexture *depthTexture() const
void setColorAttachments(std::initializer_list<QRhiColorAttachment> list)
void setColorAttachments(InputIterator first, InputIterator last)
(since 6.8) void setDepthResolveTexture(QRhiTexture *tex)
void setDepthStencilBuffer(QRhiRenderBuffer *renderBuffer)
void setDepthTexture(QRhiTexture *texture)

자세한 설명

텍스처 렌더 타깃에는 컬러 어태치먼트로 0개 이상의 텍스처, 결합된 깊이/스텐실 버퍼로 0개 또는 하나의 렌더버퍼, 깊이 버퍼로 0개 또는 하나의 텍스처가 있습니다.

참고: depthStencilBuffer()와 depthTexture()는 둘 다 설정할 수 없습니다(동시에 null이 아닐 수 없음).

QRhiTextureRenderTarget 와 함께 사용하는 몇 가지 예를 살펴보겠습니다.

생성자 덕분에 텍스처 타겟팅(깊이/스텐실 버퍼 없음)은 간단합니다:

QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, QSize(256, 256), 1, QRhiTexture::RenderTarget);
texture->create();
QRhiTextureRenderTarget *rt = rhi->newTextureRenderTarget({ texture }));

다음은 텍스처의 밉 레벨 2를 타겟팅하도록 설정된 텍스처 렌더 타겟을 생성합니다:

QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, QSize(512, 512), 1, QRhiTexture::RenderTarget | QRhiTexture::MipMapped);
texture->create();
QRhiColorAttachment colorAtt(texture);
colorAtt.setLevel(2);
QRhiTextureRenderTarget *rt = rhi->newTextureRenderTarget({ colorAtt });

이번에는 뎁스 텍스처로 렌더링하는 또 다른 예제입니다:

QRhiTexture *shadowMap = rhi->newTexture(QRhiTexture::D32F, QSize(1024, 1024), 1, QRhiTexture::RenderTarget);
shadowMap->create();
QRhiTextureRenderTargetDescription rtDesc;
rtDesc.setDepthTexture(shadowMap);
QRhiTextureRenderTarget *rt = rhi->newTextureRenderTarget(rtDesc);

매우 일반적인 경우로, 텍스처를 컬러 어태치먼트로, 렌더버퍼를 뎁스/스텐실로 지정하여 뎁스 테스트를 활성화합니다:

QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, QSize(512, 512), 1, QRhiTexture::RenderTarget);
texture->create();
QRhiRenderBuffer *depthStencil = rhi->newRenderBuffer(QRhiRenderBuffer::DepthStencil, QSize(512, 512));
depthStencil->create();
QRhiTextureRenderTargetDescription rtDesc({ texture }, depthStencil);
QRhiTextureRenderTarget *rt = rhi->newTextureRenderTarget(rtDesc);

마지막으로, (멀티샘플) 컬러 버퍼로 QRhiRenderBuffer 를 사용한 다음 일반 (멀티샘플이 아닌) 2D 텍스처로 해상도를 조정하여 이식 가능한 방식으로 멀티샘플 렌더링을 활성화하는 경우(OpenGL ES 3.0도 지원). 깊이 테스트를 활성화하려면 동일한 샘플 수를 사용해야 하는 깊이 스텐실 버퍼도 사용됩니다:

QRhiRenderBuffer *colorBuffer = rhi->newRenderBuffer(QRhiRenderBuffer::Color, QSize(512, 512), 4); // 4x MSAA
colorBuffer->create();
QRhiRenderBuffer *depthStencil = rhi->newRenderBuffer(QRhiRenderBuffer::DepthStencil, QSize(512, 512), 4);
depthStencil->create();
QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, QSize(512, 512), 1, QRhiTexture::RenderTarget);
texture->create();
QRhiColorAttachment colorAtt(colorBuffer);
colorAtt.setResolveTexture(texture);
QRhiTextureRenderTarget *rt = rhi->newTextureRenderTarget({ colorAtt, depthStencil });

참고: 멀티샘플 해상도를 활성화하면 멀티샘플 데이터가 전혀 기록되지 않을 수 있습니다. 즉, 멀티샘플 컬러 버퍼는 단지 중간 저장소일 뿐이므로 일부 GPU 아키텍처에서는 데이터가 전혀 다시 기록되지 않으므로 컬러 어태치먼트의 멀티샘플 텍스처를 나중에 샘플링(또는 다른 목적)을 위한 셰이더와 함께 사용해서는 안 됩니다. 자세한 내용은 PreserveColorContents 을 참조하세요.

참고: setDepthStencilBuffer()가 아닌 setDepthTexture()를 사용하고 이후 뎁스(스텐실) 데이터가 중요하지 않은 경우 QRhiTextureRenderTarget 에서 DoNotStoreDepthStencilContents 플래그를 설정하면 기본 3D API에 뎁스/스텐실 데이터를 폐기할 수 있음을 표시하여 타일형 GPU 아키텍처에서 성능을 향상할 수 있습니다. 뎁스-스텐실 버퍼가 QRhiRenderBuffer (멀티샘플 컬러 텍스처의 경우 이전 참고 참조)인 경우 이는 암시적이지만, 뎁스(스텐실)가 QRhiTexture 인 경우 의도를 명시적으로 선언해야 합니다. 기본적으로 QRhi 은 데이터가 관심 데이터라고 가정합니다(예: 깊이 텍스처가 셰이더에서 샘플링된 후).

참고: 이 API는 호환성이 제한적으로 보장되는 RHI API입니다. 자세한 내용은 QRhi 을 참조하세요.

QRhiColorAttachmentQRhiTextureRenderTarget참조하세요 .

멤버 함수 문서

[constexpr noexcept] QRhiTextureRenderTargetDescription::QRhiTextureRenderTargetDescription()

빈 텍스처 렌더 타깃 설명을 생성합니다.

QRhiTextureRenderTargetDescription::QRhiTextureRenderTargetDescription(const QRhiColorAttachment &colorAttachment)

colorAttachment 에 설명된 하나의 첨부 파일로 텍스처 렌더 타깃 설명을 구성합니다.

QRhiTextureRenderTargetDescription::QRhiTextureRenderTargetDescription(const QRhiColorAttachment &colorAttachment, QRhiRenderBuffer *depthStencilBuffer)

두 개의 어태치먼트, 즉 colorAttachment 에 설명된 컬러 어태치먼트와 depthStencilBuffer 에 설명된 뎁스/스텐실 어태치먼트로 텍스처 렌더 타깃 설명을 구성합니다.

QRhiTextureRenderTargetDescription::QRhiTextureRenderTargetDescription(const QRhiColorAttachment &colorAttachment, QRhiTexture *depthTexture)

colorAttachment 으로 설명하는 색상 어태치먼트와 depthTexture 으로 설명하는 깊이 어태치먼트로 텍스처 렌더 타깃 설명을 구성합니다.

참고: depthTextureQRhiTexture::D16 또는 QRhiTexture::D32F 와 같은 적절한 형식이어야 합니다.

const QRhiColorAttachment *QRhiTextureRenderTargetDescription::cbeginColorAttachments() const

첨부 파일 목록의 첫 번째 항목을 가리키는 상수 이터레이터를 반환합니다.

const QRhiColorAttachment *QRhiTextureRenderTargetDescription::cendColorAttachments() const

첨부 파일 목록의 마지막 항목 바로 뒤를 가리키는 상수 이터레이터를 반환합니다.

const QRhiColorAttachment *QRhiTextureRenderTargetDescription::colorAttachmentAt(qsizetype index) const

지정된 index 에서 컬러 어태치먼트를 반환합니다.

qsizetype QRhiTextureRenderTargetDescription::colorAttachmentCount() const

현재 설정된 색상 첨부 파일의 수를 반환합니다.

[since 6.8] QRhiTexture *QRhiTextureRenderTargetDescription::depthResolveTexture() const

다중 샘플 깊이(또는 깊이 스텐실) 텍스처(또는 텍스처 배열)가 해결되는 텍스처를 반환합니다. nullptr, 가장 일반적인 경우입니다.

이 함수는 Qt 6.8에 도입되었습니다.

setDepthResolveTexture(), QRhiColorAttachment::resolveTexture() 및 depthTexture()도 참조하십시오 .

QRhiRenderBuffer *QRhiTextureRenderTargetDescription::depthStencilBuffer() const

뎁스 스텐실 버퍼로 사용된 렌더버퍼를 반환하거나, 설정되지 않은 경우 nullptr 을 반환합니다.

setDepthStencilBuffer()도 참조하세요 .

QRhiTexture *QRhiTextureRenderTargetDescription::depthTexture() const

현재 참조된 깊이 텍스처를 반환하거나 설정된 것이 없는 경우 nullptr 를 반환합니다.

setDepthTexture()도 참조하세요 .

void QRhiTextureRenderTargetDescription::setColorAttachments(std::initializer_list<QRhiColorAttachment> list)

컬러 첨부 파일의 list 을 설정합니다.

template <typename InputIterator> void QRhiTextureRenderTargetDescription::setColorAttachments(InputIterator first, InputIterator last)

이터레이터 firstlast 를 통해 색상 첨부 파일 목록을 설정합니다.

[since 6.8] void QRhiTextureRenderTargetDescription::setDepthResolveTexture(QRhiTexture *tex)

깊이(또는 깊이 스텐실) 해상도 텍스처를 설정합니다 tex.

tex 는 2D 텍스처 또는 setDepthTexture()를 통해 설정된 텍스처와 일치하는 형식의 2D 텍스처 배열일 것으로 예상됩니다.

참고: 깊이(또는 뎁스 스텐실) 데이터 확인은 런타임에 ResolveDepthStencil 기능이 지원되는 것으로 보고된 경우에만 작동합니다. 뎁스 스텐실 해상도 해결은 그래픽 API에서 보편적으로 지원되지 않습니다. 따라서 뎁스 스텐실 리졸브를 무조건 사용할 수 있다고 가정하는 디자인은 이식성이 떨어지므로 피해야 합니다.

참고: 특히 OpenGL ES의 추가 제한 사항으로, 뎁스 해상도 텍스처 설정은 setDepthStencilBuffer()이 아닌 setDepthTexture()와 함께 사용할 때만 작동할 수 있습니다.

이 함수는 Qt 6.8에 도입되었습니다.

depthResolveTexture(), QRhiColorAttachment::setResolveTexture() 및 setDepthTexture()도 참조하십시오 .

void QRhiTextureRenderTargetDescription::setDepthStencilBuffer(QRhiRenderBuffer *renderBuffer)

뎁스 스텐실에 대해 renderBuffer 을 설정합니다. 이 렌더 대상에 대한 렌더 패스의 그래픽 파이프라인에서 뎁스 테스트/쓰기 또는 스텐실 관련 기능이 사용되지 않는 경우와 같이 필수는 아니지만 nullptr 로 설정할 수 있습니다.

참고: depthStencilBuffer()와 depthTexture()는 둘 다 설정할 수 없습니다(동시에 null이 아닐 수 없음).

2D QRhiTexture 대신 QRhiRenderBuffer 을 깊이 또는 깊이/스텐실 버퍼로 사용하는 것은 매우 일반적이며 애플리케이션에 권장되는 방식입니다. 뎁스 데이터를 나중에 액세스(예: 셰이더에서 샘플링)하거나 multiview rendering 이 관련된 경우(뎁스 텍스처가 텍스처 배열이어야 하므로) QRhiTexture 을 사용하므로 setDepthTexture()가 적절합니다.

depthStencilBuffer() 및 setDepthTexture()도 참조하십시오 .

void QRhiTextureRenderTargetDescription::setDepthTexture(QRhiTexture *texture)

깊이 스텐실에 texture 을 설정합니다. setDepthStencilBuffer ()의 대안으로 QRhiRenderBuffer 대신 적절한 유형(예: QRhiTexture::D32F)의 QRhiTexture 을 제공합니다.

참고: depthStencilBuffer()와 depthTexture()는 둘 다 설정할 수 없습니다(동시에 null이 아닐 수 없음).

texture 는 2D 텍스처 또는 2D 텍스처 배열일 수 있습니다(텍스처 배열이 지원되는 경우). 텍스처 배열을 지정하는 것은 특히 multiview rendering 와 관련이 있습니다.

참고: textureQRhiTexture::D24S8 과 같이 스텐실 컴포넌트가 있는 형식인 경우 스텐실 버퍼 역할도 합니다.

depthTexture() 및 setDepthStencilBuffer()도 참조하세요 .

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