QRhiTextureRenderTarget 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
상속합니다: QRhiRenderTarget

공용 형

enum Flag { PreserveColorContents, PreserveDepthStencilContents, DoNotStoreDepthStencilContents }
flags Flags

공용 함수

virtual bool create() = 0
QRhiTextureRenderTargetDescription description() const
QRhiTextureRenderTarget::Flags flags() const
virtual QRhiRenderPassDescriptor *newCompatibleRenderPassDescriptor() = 0
void setDescription(const QRhiTextureRenderTargetDescription &desc)
void setFlags(QRhiTextureRenderTarget::Flags f)

재구현된 공용 함수

virtual QRhiResource::Type resourceType() const override

상세 설명

텍스처 렌더 타깃은 선택적으로 뎁스 텍스처 또는 뎁스/스텐실 렌더버퍼를 사용하여 하나 이상의 텍스처로 렌더링할 수 있습니다.

멀티샘플 렌더링의 경우 렌더버퍼를 색상 어태치먼트로 사용하고 멀티샘플이 아닌 대상 텍스처를 resolve texture 로 설정하는 것이 일반적인 방법입니다. 자세한 내용은 QRhiColorAttachment 클래스에 대한 자세한 설명을 참조하세요.

참고: QRhiTextureRenderTarget과 함께 사용되는 텍스처는 QRhiTexture::RenderTarget 플래그를 사용하여 생성해야 합니다.

텍스처를 단일 색상으로 첨부하여 렌더 타겟을 만드는 가장 간단한 예제입니다:

QRhiTexture *texture = rhi->newTexture(QRhiTexture::RGBA8, size, 1, QRhiTexture::RenderTarget);
texture->create();
QRhiTextureRenderTarget *rt = rhi->newTextureRenderTarget({ texture });
rp = rt->newCompatibleRenderPassDescriptor();
rt->setRenderPassDescriptor(rp);
rt->create();
// rt can now be used with beginPass()

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

멤버 유형 문서

열거형 QRhiTextureRenderTarget::플래그
플래그 QRhiTextureRenderTarget::플래그

렌더 타깃의 로드/저장 동작을 설명하는 플래그 값입니다. 로드/저장 동작은 백엔드에 따라 내부적으로 네이티브 리소스에 구워질 수 있으므로 미리 알아야 하며 리빌드(즉, 새로운 네이티브 리소스를 해제 및 생성)하지 않고는 변경할 수 없습니다.

Constant설명
QRhiTextureRenderTarget::PreserveColorContents1 << 0렌더 패스를 시작할 때 컬러 어태치먼트의 내용을 지우는 대신 로드할 것을 나타냅니다. 특히 모바일(타일형) GPU에서는 비용이 더 많이 들 수 있지만 패스 사이에 기존 콘텐츠를 보존할 수 있습니다. 리졸브 텍스처가 설정된 멀티샘플 렌더링을 수행할 때 이 플래그를 설정하면 멀티샘플 컬러 데이터를 멀티샘플 텍스처 또는 렌더 버퍼에 저장(쓰기)하도록 요청할 수도 있습니다. (비멀티샘플 렌더링의 경우 컬러 데이터는 항상 저장되지만, MSAA의 경우 멀티샘플 데이터를 저장하면 특정 GPU 아키텍처의 효율성이 저하되므로 기본적으로 쓰지 않도록 설정됩니다.) 그러나 이는 이식성이 없습니다. 그래픽 API 레벨에 중간 멀티샘플 텍스처가 없는 경우, 예를 들어 OpenGL ES의 GL_EXT_multisampled_render_to_texture 를 사용하는 경우 모두 암시적이며 OpenGL ES 구현에서 처리하므로 이식되지 않는다는 점에 유의하세요. 이 경우 PreserveColorContents는 효과가 없을 가능성이 높습니다. 따라서 멀티샘플 렌더링을 사용하고 색상 어태치먼트가 멀티샘플 QRhiTexture ( QRhiRenderBuffer)이 아닌 멀티샘플을 사용하는 경우에는 이 플래그에 의존하지 마세요.
QRhiTextureRenderTarget::PreserveDepthStencilContents1 << 1렌더 패스를 시작할 때 뎁스 텍스처의 내용을 로드하는 대신 지우도록 합니다. 뎁스/스텐실 렌더버퍼에는 물리적 백업이 없고 데이터가 처음부터 기록되지 않을 수 있으므로 텍스처가 뎁스 버퍼로 사용되는 경우(QRhiTextureRenderTargetDescription::depthTexture() 설정)에만 적용됩니다.
QRhiTextureRenderTarget::DoNotStoreDepthStencilContents1 << 2뎁스 텍스처의 내용을 기록할 필요가 없음을 나타냅니다. QRhiRenderBuffer 이 아닌 QRhiTexture 이 뎁스 스텐실 버퍼로 사용되는 경우에만 관련되며, QRhiRenderBuffer 의 경우 이는 암시적입니다. depthResolveTexture가 설정되면 플래그가 설정된 것처럼 동작하므로 플래그는 관련이 없습니다. 이 열거형 값은 Qt 6.8에 도입되었습니다.

Flags 유형은 QFlags<Flag>에 대한 typedef입니다. 플래그 값의 OR 조합을 저장합니다.

멤버 함수 문서

[pure virtual] bool QRhiTextureRenderTarget::create()

해당 네이티브 그래픽 리소스를 생성합니다. 해당하는 destroy()가 없는 이전 create()로 인해 이미 리소스가 있는 경우 destroy()가 암시적으로 먼저 호출됩니다.

참고: create()를 호출하기 전에renderPassDescriptor()를 설정해야 합니다. 렌더링 대상과 호환되는 QRhiRenderPassDescriptor 을 얻으려면 create() 전에 newCompatibleRenderPassDescriptor()를 호출하되 description() 및 flags()와 같은 다른 모든 매개 변수를 설정한 후에 호출하세요. 리소스를 절약하려면 가능하면 여러 개의 QRhiTextureRenderTarget 인스턴스에 동일한 QRhiRenderPassDescriptor 을 재사용하세요. 동일한 렌더 패스 설명자를 공유하는 것은 렌더 대상의 어태치먼트 수와 유형(실제 텍스처는 다를 수 있음)이 같고 플래그가 같은 경우에만 가능합니다.

참고: description()에서 참조된 QRhiTexture 인스턴스와 같은 리소스에는 이미 create()가 호출되어 있어야 합니다.

성공하면 true, 그래픽 작업이 실패하면 false 을 반환합니다. 반환 값에 관계없이 destroy()를 호출하는 것은 항상 안전합니다.

QRhiTextureRenderTargetDescription QRhiTextureRenderTarget::description() const

렌더링 대상 설명을 반환합니다.

setDescription()도 참조하세요 .

QRhiTextureRenderTarget::Flags QRhiTextureRenderTarget::flags() const

현재 설정된 플래그를 반환합니다.

setFlags()도 참조하세요 .

[pure virtual] QRhiRenderPassDescriptor *QRhiTextureRenderTarget::newCompatibleRenderPassDescriptor()

이 렌더링 대상과 호환되는 새 QRhiRenderPassDescriptor 을 반환합니다.

반환된 값은 setRenderPassDescriptor() 및 QRhiGraphicsPipeline::setRenderPassDescriptor()에 전달할 수 있습니다. 렌더 패스 설명자는 flags()의 영향을 받을 수 있는 어태치먼트(색상, 깊이/스텐실)와 로드/저장 동작을 설명합니다. QRhiGraphicsPipelinecompatible QRhiRenderPassDescriptor 가 설정된 렌더링 대상과 함께만 사용할 수 있습니다.

두 개의 QRhiTextureRenderTarget 인스턴스는 첨부 파일의 수와 유형이 동일하다면 동일한 렌더 패스 설명자를 공유할 수 있습니다. 연결된 QRhiTexture 또는 QRhiRenderBuffer 인스턴스는 렌더 패스 설명자의 일부가 아니므로 두 개의 QRhiTextureRenderTarget 인스턴스에서 다를 수 있습니다.

참고: description()에서 참조된 QRhiTexture 인스턴스와 같은 리소스에는 이미 create()가 호출되어 있어야 합니다.

create()도 참조하세요 .

[override virtual] QRhiResource::Type QRhiTextureRenderTarget::resourceType() const

재구현합니다: QRhiResource::resourceType() const.

리소스 타입을 리턴합니다.

void QRhiTextureRenderTarget::setDescription(const QRhiTextureRenderTargetDescription &desc)

렌더링 대상 설명을 설정합니다 desc.

description()도 참조하세요 .

void QRhiTextureRenderTarget::setFlags(QRhiTextureRenderTarget::Flags f)

플래그를 f 로 설정합니다.

flags()도 참조하세요 .

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