QRhiResource Class
네이티브 리소스 객체를 캡슐화하는 클래스를 위한 베이스 클래스입니다. 더 보기...
Header: | #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 |
상속받은 사람: |
공용 유형
enum | Type { Buffer, Texture, Sampler, RenderBuffer, RenderPassDescriptor, …, CommandBuffer } |
공용 함수
virtual | ~QRhiResource() |
void | deleteLater() |
virtual void | destroy() = 0 |
quint64 | globalResourceId() const |
QByteArray | name() const |
virtual QRhiResource::Type | resourceType() const = 0 |
QRhi * | rhi() const |
void | setName(const QByteArray &name) |
상세 설명
참고: 호환성이 제한적으로 보장되는 RHI API입니다. 자세한 내용은 QRhi 을 참조하세요.
멤버 유형 문서
enum QRhiResource::Type
리소스 유형을 지정합니다.
상수 | 값 |
---|---|
QRhiResource::Buffer | 0 |
QRhiResource::Texture | 1 |
QRhiResource::Sampler | 2 |
QRhiResource::RenderBuffer | 3 |
QRhiResource::RenderPassDescriptor | 4 |
QRhiResource::SwapChainRenderTarget | 5 |
QRhiResource::TextureRenderTarget | 6 |
QRhiResource::ShaderResourceBindings | 7 |
QRhiResource::GraphicsPipeline | 8 |
QRhiResource::SwapChain | 9 |
QRhiResource::ComputePipeline | 10 |
QRhiResource::CommandBuffer | 11 |
멤버 함수 문서
[virtual noexcept]
QRhiResource::~QRhiResource()
디스트럭터.
기본 네이티브 그래픽 리소스가 있는 경우 이를 해제(또는 해제 연기를 요청)합니다.
참고: 현재 프레임에 대한 명령에 참조된 리소스는 QRhi::endFrame()로 프레임을 제출할 때까지 해제해서는 안 됩니다.
destroy()도 참조하세요 .
void QRhiResource::deleteLater()
프레임이 기록되지 않은 상태에서 이 함수를 호출하면 객체를 삭제하는 것과 같습니다. 그러나 QRhi::beginFrame()와 QRhi::endFrame()의 동작은 다릅니다. QRhiResource 는 프레임이 QRhi::endFrame()를 통해 제출될 때까지 파괴되지 않으므로 기록 중인 프레임이 참조하는 QRhiResource 객체를 변경하지 않아야 한다는 QRhi 요건을 충족합니다.
이 객체를 생성한 QRhi 이 이미 소멸된 경우 객체는 즉시 삭제됩니다.
deleteLater()를 사용하면 많은 경우에 유용하게 사용할 수 있으며, 저수준 보장(안전할 때까지 기본 네이티브 그래픽 객체가 파괴되지 않고, 아직 진행 중인 프레임에서 GPU가 사용하지 않는다는 것이 확실히 알려질 때까지) 기능을 보완하여 C++ 객체 인스턴스( QRhiBuffer, QRhiTexture 등) 자체도 현재 프레임이 끝날 때까지 유효하게 유지되도록 하는 방법을 제공함으로써 이를 보완합니다.
다음 예제는 한 프레임에서만 사용되고 endFrame()에서 자동으로 해제되는 버려지는 버퍼를 만드는 편리한 방법을 보여줍니다. (기본 네이티브 버퍼의 경우 일반적인 보증이 적용됩니다. QRhi 백엔드는 버퍼가 GPU에 의해 액세스되는 프레임이 완료될 때까지 해당 버퍼의 해제를 연기합니다).
rhi->beginFrame(swapchain); QRhiBuffer *buf = rhi->newBuffer(QRhiBuffer::Immutable, QRhiBuffer::VertexBuffer, 256); buf->deleteLater(); // ! u = rhi->nextResourceUpdateBatch(); u->uploadStaticBuffer(buf, data); // ... draw with buf rhi->endFrame();
destroy()도 참조하세요 .
[pure virtual]
void QRhiResource::destroy()
기본 네이티브 그래픽 리소스를 해제(또는 해제 연기 요청)합니다. 여러 번 호출해도 안전하며, 이후 호출은 아무런 문제가 없습니다.
destroy()가 호출되면 create()
을 다시 호출하여 QRhiResource 인스턴스를 재사용할 수 있습니다. 그러면 그 아래에 새로운 네이티브 그래픽 리소스가 생성됩니다.
참고: 현재 프레임에 대한 명령에 참조된 리소스는 QRhi::endFrame()에 의해 프레임이 제출될 때까지 해제되지 않아야 합니다.
QRhiResource 소멸자도 동일한 작업을 수행하므로 QRhiResource 을 삭제하기 전에 이 함수를 호출할 필요는 없습니다.
deleteLater()도 참조하세요 .
quint64 QRhiResource::globalResourceId() const
이 QRhiResource 의 글로벌 고유 식별자를 반환합니다.
사용자 코드가 이 값을 직접 처리할 필요는 거의 없습니다. 내부적으로 추적 및 장부 작성 목적으로 사용됩니다.
QByteArray QRhiResource::name() const
현재 설정된 객체 이름을 반환합니다. 기본적으로 이름은 비어 있습니다.
setName()도 참조하세요 .
[pure virtual]
QRhiResource::Type QRhiResource::resourceType() const
리소스 유형을 반환합니다.
QRhi *QRhiResource::rhi() const
이 리소스를 생성한 QRhi 을 반환합니다.
이 객체를 생성한 QRhi 이 이미 삭제된 경우 결과는 nullptr
입니다.
void QRhiResource::setName(const QByteArray &name)
오브젝트에 name 을 설정합니다.
이를 통해 RenderDoc 및 XCode와 같은 그래픽 디버깅 도구에 표시되는 네이티브 그래픽 리소스에 대한 설명적인 이름을 얻을 수 있습니다.
적절한 그래픽 API를 통해 이름을 전달하여 네이티브 객체의 이름을 지정하는 경우 QRhi::DebugMarkers 이 지원되지 않는 경우 이름이 무시되며, 백엔드에 따라 QRhi::EnableDebugMarkers 이 설정되지 않은 경우에도 이름이 무시될 수 있다는 점에 유의하세요.
참고: 백엔드에 따라 버퍼, 렌더버퍼, 텍스처 이외의 객체에 대해서는 이름이 무시될 수 있습니다.
참고: 이름은 수정될 수 있습니다. 여러 네이티브 버퍼로 지원되는 QRhiBuffer 같은 슬롯 리소스의 경우 QRhi 에 접미사를 추가하여 기본 네이티브 버퍼를 쉽게 구분할 수 있도록 합니다.
name()도 참조하세요 .
© 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.