QRhiTextureRenderTarget Class
텍스처 렌더 타겟 리소스. 더 보기...
| 헤더: | #include <rhi/qrhi.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS GuiPrivate) 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 를 참조하십시오.
멤버 유형 문서
enum QRhiTextureRenderTarget::Flag
flags QRhiTextureRenderTarget::Flags
렌더 타깃의 로드/저장 동작을 설명하는 플래그 값입니다. 로드/저장 동작은 백엔드에 따라 내부적으로 네이티브 리소스에 내장될 수 있으므로, 이를 사전에 파악해야 하며, 재컴파일(그리고 이에 따른 기존 네이티브 리소스 해제 및 새 네이티브 리소스 생성) 없이는 변경할 수 없습니다.
| 상수 | 값 | 설명 |
|---|---|---|
QRhiTextureRenderTarget::PreserveColorContents | 1 << 0 | 렌더 패스를 시작할 때 색상 어태치먼트의 내용을 지우지 않고 로드해야 함을 나타냅니다. 이는 특히 모바일(타일형) GPU에서 더 많은 연산 비용이 발생할 수 있지만, 패스 간에 기존 내용을 보존할 수 있게 해줍니다. 해상도 텍스처 세트를 사용하여 멀티샘플 렌더링을 수행할 때, 이 플래그를 설정하면 멀티샘플 색상 데이터가 멀티샘플 텍스처나 렌더 버퍼에 저장(출력)되도록 요청합니다. (멀티샘플 렌더링이 아닌 경우 색상 데이터는 항상 저장되지만, MSAA의 경우 멀티샘플 데이터를 저장하면 특정 GPU 아키텍처에서 효율성이 떨어지므로 기본적으로 기록되지 않습니다) 그러나 이는 이식성이 없다는 점에 유의하십시오. 일부 경우, 그래픽 API 수준에서 중간 멀티샘플 텍스처가 존재하지 않을 수 있습니다. 예를 들어, OpenGL ES의 ` GL_EXT_multisampled_render_to_texture `를 사용할 때는 모든 과정이 암시적이며 OpenGL ES 구현체에서 처리되기 때문입니다. 이 경우, `PreserveColorContents`는 아무런 효과가 없을 가능성이 높습니다. 따라서 멀티샘플 렌더링을 사용하고 색상 어태치먼트가 멀티샘플 QRhiTexture ( QRhiRenderBuffer 가 아님)를 사용하는 경우, 이 플래그에 의존하지 않도록 하십시오. |
QRhiTextureRenderTarget::PreserveDepthStencilContents | 1 << 1 | 렌더 패스를 시작할 때 깊이 텍스처의 내용을 지우지 않고 불러오도록 지정합니다. 이 옵션은 텍스처가 깊이 버퍼로 사용될 때(QRhiTextureRenderTargetDescription::depthTexture()가 설정된 경우)에만 적용됩니다. 깊이/스텐실 렌더 버퍼는 물리적 백킹을 갖지 않을 수 있으며, 애초에 데이터가 기록되지 않을 수도 있기 때문입니다. |
QRhiTextureRenderTarget::DoNotStoreDepthStencilContents | 1 << 2 | 깊이 텍스처의 내용을 외부로 출력할 필요가 없음을 나타냅니다. 이 플래그는 QRhiRenderBuffer 가 아닌 QRhiTexture 가 깊이-스텐실 버퍼로 사용될 때만 관련이 있습니다. QRhiRenderBuffer 의 경우 이는 암시적으로 적용되기 때문입니다. depthResolveTexture가 설정된 경우, 해당 플래그는 설정된 것과 동일한 동작을 하므로 이 플래그는 관련이 없습니다. 이 열거형 값은 Qt 6.8에서 도입되었습니다. |
Flags 유형은 QFlags<Flag>에 대한 typedef입니다. 이 유형은 Flag 값들의 OR 조합을 저장합니다.
멤버 함수 문서
[pure virtual] bool QRhiTextureRenderTarget::create()
해당 네이티브 그래픽 리소스를 생성합니다. 이전에 destroy() 호출 없이 create()가 호출되어 이미 리소스가 존재하는 경우, 먼저 destroy()가 암시적으로 호출됩니다.
참고: create()를 호출하기 전에renderPassDescriptor()을 반드시 설정해야 합니다. 렌더 타깃과 호환되는 QRhiRenderPassDescriptor 를 얻으려면, create()를 호출하기 전이지만 description() 및 flags()과 같은 다른 모든 매개변수를 설정한 후에 newCompatibleRenderPassDescriptor()를 호출하십시오. 리소스를 절약하기 위해, 가능한 경우 여러 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()`에 의해 영향을 받을 수 있는 첨부 요소(색상, 깊이/스텐실) 및 로드/저장 동작을 설명합니다. ` QRhiGraphicsPipeline `는 ` compatible ` 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()도 참조하십시오 .
© 2026 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.