QRhiShaderResourceBinding 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부터 |
공개 유형
| enum | StageFlag { VertexStage, TessellationControlStage, TessellationEvaluationStage, FragmentStage, ComputeStage, GeometryStage } |
| flags | StageFlags |
| enum | Type { UniformBuffer, SampledTexture, Texture, Sampler, ImageLoad, …, BufferLoadStore } |
공개 함수
| QRhiShaderResourceBinding() | |
| bool | isLayoutCompatible(const QRhiShaderResourceBinding &other) const |
정적 공용 멤버
| QRhiShaderResourceBinding | bufferLoad(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf) |
| QRhiShaderResourceBinding | bufferLoad(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 offset, quint32 size) |
| QRhiShaderResourceBinding | bufferLoadStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf) |
| QRhiShaderResourceBinding | bufferLoadStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 offset, quint32 size) |
| QRhiShaderResourceBinding | bufferStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf) |
| QRhiShaderResourceBinding | bufferStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 offset, quint32 size) |
| QRhiShaderResourceBinding | imageLoad(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex, int level) |
| QRhiShaderResourceBinding | imageLoadStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex, int level) |
| QRhiShaderResourceBinding | imageStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex, int level) |
| QRhiShaderResourceBinding | sampledTexture(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex, QRhiSampler *sampler) |
| QRhiShaderResourceBinding | sampledTextures(int binding, QRhiShaderResourceBinding::StageFlags stage, int count, const QRhiShaderResourceBinding::TextureAndSampler *texSamplers) |
| QRhiShaderResourceBinding | sampler(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiSampler *sampler) |
| QRhiShaderResourceBinding | texture(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex) |
| QRhiShaderResourceBinding | textures(int binding, QRhiShaderResourceBinding::StageFlags stage, int count, QRhiTexture **tex) |
| QRhiShaderResourceBinding | uniformBuffer(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf) |
| QRhiShaderResourceBinding | uniformBuffer(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 offset, quint32 size) |
| QRhiShaderResourceBinding | uniformBufferWithDynamicOffset(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 size) |
관련 비멤버
| size_t | qHash(const QRhiShaderResourceBinding &key, size_t seed = 0) |
| bool | operator!=(const QRhiShaderResourceBinding &a, const QRhiShaderResourceBinding &b) |
| bool | operator==(const QRhiShaderResourceBinding &a, const QRhiShaderResourceBinding &b) |
상세 설명
QRhiShaderResourceBinding은 직접 생성할 수 없습니다. 대신, uniformBuffer() 또는 sampledTexture()와 같은 정적 함수를 사용하여 인스턴스를 가져와야 합니다.
참고: 이는 호환성 보장이 제한적인 RHI API입니다. 자세한 내용은 QRhi 를 참조하십시오.
멤버 유형 설명
enum QRhiShaderResourceBinding::StageFlag
flags QRhiShaderResourceBinding::StageFlags
셰이더 리소스가 표시되는 단계를 나타내는 플래그 값
| 상수 | 값 | 설명 |
|---|---|---|
QRhiShaderResourceBinding::VertexStage | 1 << 0 | 버텍스 스테이지 |
QRhiShaderResourceBinding::TessellationControlStage | 1 << 1 | 테셀레이션 제어(헐 셰이더) 단계 |
QRhiShaderResourceBinding::TessellationEvaluationStage | 1 << 2 | 테셀레이션 평가(도메인 셰이더) 단계 |
QRhiShaderResourceBinding::FragmentStage | 1 << 4 | 프래그먼트(픽셀 셰이더) 단계 |
QRhiShaderResourceBinding::ComputeStage | 1 << 5 | 컴퓨트 스테이지 |
QRhiShaderResourceBinding::GeometryStage | 1 << 3 | 지오메트리 단계 |
StageFlags 유형은 QFlags<StageFlag>에 대한 typedef입니다. 이 유형은 StageFlag 값들의 OR 조합을 저장합니다.
enum QRhiShaderResourceBinding::Type
바인딩 지점에 바인딩된 셰이더 리소스의 유형을 지정합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QRhiShaderResourceBinding::UniformBuffer | 0 | 유니폼 버퍼 |
QRhiShaderResourceBinding::SampledTexture | 1 | 결합된 이미지 샘플러(텍스처와 샘플러 쌍). 기본이 되는 3D API와 관련된 셰이딩 언어가 이 개념을 지원하지 않는 경우(예: D3D 및 HLSL)에도, 셰이더 변환 레이어가 바인딩 포인트나 셰이더 레지스터의 적절한 변환 및 재매핑을 처리하므로 이 기능은 여전히 지원됩니다. |
QRhiShaderResourceBinding::Texture | 2 | 텍스처(별도) |
QRhiShaderResourceBinding::Sampler | 3 | 샘플러(별도) |
QRhiShaderResourceBinding::ImageLoad | 4 | 이미지 로드 (GLSL의 경우, 셰이더에 이미지 객체로 노출된 텍스처의 단일 레벨(하나의 레이어 또는 모든 레이어)에서 imageLoad()을 수행하는 것과 매핑됩니다) |
QRhiShaderResourceBinding::ImageStore | 5 | 이미지 저장 (GLSL의 경우, 이는 셰이더에 이미지 객체로 노출된 텍스처의 단일 레벨(및 하나 또는 모든 레이어)에 대해 imageStore() 또는 imageAtomic*()을 수행하는 것과 동일합니다) |
QRhiShaderResourceBinding::ImageLoadStore | 6 | 이미지 로드 및 저장 |
QRhiShaderResourceBinding::BufferLoad | 7 | 저장 버퍼 로드 (GLSL에서는 셰이더 저장 버퍼에서 읽는 작업에 해당함) |
QRhiShaderResourceBinding::BufferStore | 8 | 저장 버퍼 저장 (GLSL에서는 셰이더 저장 버퍼에 쓰기 작업에 해당합니다) |
QRhiShaderResourceBinding::BufferLoadStore | 9 | 저장 버퍼 읽기 및 쓰기 |
멤버 함수 문서
[constexpr noexcept default] QRhiShaderResourceBinding::QRhiShaderResourceBinding()
QRhiShaderResourceBinding 의 인스턴스를 기본 생성합니다.
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferLoad(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf)
지정된 binding 번호와 파이프라인 stage 을 가진 읽기 전용 스토리지 버퍼에 대한 셰이더 리소스 바인딩을 반환합니다.
참고: ` buf `가 null이 아닌경우 , ` QRhiBuffer::StorageBuffer`를 사용하여 생성되었어야 합니다.
참고: buf 는 null일 수 있습니다. 리소스가 지정되지 않은 QRhiShaderResourceBindings 를 생성하는 것은 유효하지만, 이러한 객체는 QRhiCommandBuffer::setShaderResources()와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 반드시 리소스가 포함된, 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 와 함께 QRhiCommandBuffer::setShaderResources()에 전달되어 사용되어야 합니다.
참고: 버퍼 로드/스토어는 컴퓨트 파이프라인 내에서만 사용이 보장됩니다. 일부 백엔드에서는 그래픽스 파이프라인에서도 이러한 리소스 사용을 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원된다 하더라도 배리어 및 동기화와 관련하여 예기치 않은 문제가 발생할 수 있습니다. 따라서 컴퓨트 셰이더 이외의 셰이더에서는 이러한 리소스의 사용을 피하십시오.
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferLoad(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 offset, quint32 size)
지정된 binding 번호와 파이프라인 stage 을 가진 읽기 전용 스토리지 버퍼에 대한 셰이더 리소스 바인딩을 반환합니다. 이 오버로드는 offset 및 size 에 명시된 대로 영역만 바인딩합니다.
참고: buf 가 null이 아닌경우 , 반드시 QRhiBuffer::StorageBuffer 를 사용하여 생성되었어야 합니다.
참고: buf 는 null일 수 있습니다. 리소스가 지정되지 않은 상태로 QRhiShaderResourceBindings 를 생성하는 것은 유효하지만, 이러한 객체는 QRhiCommandBuffer::setShaderResources()와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 반드시 리소스가 지정된, 레이아웃 호환 가능한 다른 QRhiShaderResourceBindings 와 함께 사용되어야 하며, 해당 리소스는 QRhiCommandBuffer::setShaderResources()에 전달되어야 합니다.
참고: 버퍼 로드/스토어는 컴퓨트 파이프라인 내에서만 사용이 보장됩니다. 일부 백엔드에서는 그래픽 파이프라인에서도 이러한 리소스 사용을 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원된다 하더라도 배리어 및 동기화 과정에서 예기치 않은 문제가 발생할 수 있습니다. 따라서 컴퓨트 셰이더 이외의 셰이더에서는 이러한 리소스의 사용을 피하십시오.
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferLoadStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf)
지정된 binding 번호와 파이프라인 stage 을 가진 읽기-쓰기 스토리지 버퍼에 대한 셰이더 리소스 바인딩을 반환합니다.
참고: ` buf `가 null이 아닌경우 , ` QRhiBuffer::StorageBuffer`를 사용하여 생성되었어야 합니다.
참고: ` buf `는 `null`일 수 있습니다. 리소스가 지정되지 않은 ` QRhiShaderResourceBindings `을 생성하는 것은 유효하지만, 이러한 객체는 ` QRhiCommandBuffer::setShaderResources()`와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 반드시 리소스가 포함된 레이아웃 호환 ` QRhiShaderResourceBindings `과 함께 사용되어야 하며, 해당 ` `은 ` QRhiCommandBuffer::setShaderResources()`에 전달되어야 합니다.
참고: 버퍼 로드/스토어는 컴퓨트 파이프라인 내에서만 사용이 보장됩니다. 일부 백엔드에서는 그래픽스 파이프라인에서도 이러한 리소스 사용을 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원된다 하더라도 배리어 및 동기화와 관련하여 예상치 못한 문제가 발생할 수 있습니다. 따라서 컴퓨트 셰이더 이외의 셰이더에서는 이러한 리소스의 사용을 피하십시오.
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferLoadStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 offset, quint32 size)
지정된 binding 번호와 파이프라인 stage 을 가진 읽기-쓰기 스토리지 버퍼에 대한 셰이더 리소스 바인딩을 반환합니다. 이 오버로드는 offset 및 size 에 명시된 대로 영역만 바인딩합니다.
참고: buf 가 null이 아닌경우 , 반드시 QRhiBuffer::StorageBuffer 를 사용하여 생성되었어야 합니다.
참고: buf 는 null일 수 있습니다. 리소스가 지정되지 않은 상태에서 QRhiShaderResourceBindings 를 생성하는 것은 유효하지만, 이러한 객체는 QRhiCommandBuffer::setShaderResources()와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 반드시 리소스가 포함된, 레이아웃 호환이 가능한 다른 QRhiShaderResourceBindings 와 함께 사용되어야 하며, 해당 리소스는 QRhiCommandBuffer::setShaderResources()에 전달되어야 합니다.
참고: 버퍼 로드/스토어는 컴퓨트 파이프라인 내에서만 사용이 보장됩니다. 일부 백엔드에서는 그래픽스 파이프라인에서도 이러한 리소스 사용을 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원된다 하더라도 배리어 및 동기화와 관련하여 예기치 않은 문제가 발생할 수 있습니다. 따라서 컴퓨트 셰이더 이외의 셰이더에서는 이러한 리소스의 사용을 피해야 합니다.
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf)
지정된 binding 번호와 파이프라인 stage 을 가진 쓰기 전용 스토리지 버퍼에 대한 셰이더 리소스 바인딩을 반환합니다.
참고: buf 가 null이 아닌경우 , QRhiBuffer::StorageBuffer 를 사용하여 생성되었어야 합니다.
참고: ` buf `는 `null`일 수 있습니다. 리소스가 지정되지 않은 ` QRhiShaderResourceBindings `을 생성하는 것은 유효하지만, 이러한 객체는 ` QRhiCommandBuffer::setShaderResources()`와 함께 사용할 수 없습니다. 그러나 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 항상 리소스가 포함된 레이아웃 호환 ` QRhiShaderResourceBindings `과 함께 ` QRhiCommandBuffer::setShaderResources()`에 전달되어야 합니다.
참고: 버퍼 로드/스토어는 컴퓨트 파이프라인 내에서만 사용이 보장됩니다. 일부 백엔드에서는 그래픽스 파이프라인에서도 이러한 리소스를 사용할 수 있도록 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원된다 하더라도 배리어 및 동기화와 관련하여 예기치 않은 문제가 발생할 수 있습니다. 따라서 컴퓨트 셰이더 이외의 셰이더에서는 이러한 리소스의 사용을 피하십시오.
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 offset, quint32 size)
지정된 binding 번호와 파이프라인 stage 을 가진 쓰기 전용 스토리지 버퍼에 대한 셰이더 리소스 바인딩을 반환합니다. 이 오버로드는 offset 및 size 에 지정된 대로 영역만 바인딩합니다.
참고: buf 가 null이 아닌경우 , QRhiBuffer::StorageBuffer 를 사용하여 생성되었어야 합니다.
참고: buf 는 null일 수 있습니다. 리소스가 명시되지 않은 상태로 QRhiShaderResourceBindings 를 생성하는 것은 유효하지만, 이러한 객체는 QRhiCommandBuffer::setShaderResources()와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 반드시 리소스가 포함된, 레이아웃 호환 가능한 다른 QRhiShaderResourceBindings 와 함께 사용되어야 하며, 해당 리소스는 QRhiCommandBuffer::setShaderResources()에 전달되어야 합니다.
참고: 버퍼 로드/스토어는 컴퓨트 파이프라인 내에서만 사용이 보장됩니다. 일부 백엔드에서는 그래픽스 파이프라인에서도 이러한 리소스 사용을 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원된다 하더라도 배리어 및 동기화와 관련하여 예상치 못한 문제가 발생할 수 있습니다. 따라서 컴퓨트 셰이더 이외의 셰이더에서는 이러한 리소스의 사용을 피하십시오.
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::imageLoad(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex, int level)
지정된 binding 번호와 파이프라인 stage 을 가진 읽기 전용 스토리지 이미지에 대한 셰이더 리소스 바인딩을 반환합니다. 이미지 로드 연산은 지정된 level 의 모든 레이어에 접근할 수 있습니다. (따라서 텍스처가 큐브맵인 경우, 셰이더는 image2D 대신 imageCube를 사용해야 합니다.)
참고: tex 가 null이 아닌경우 , 반드시 QRhiTexture::UsedWithLoadStore 를 사용하여 생성된 것이어야 합니다.
참고: ` tex `는 null일 수 있습니다. 리소스가 지정되지 않은 상태로 ` QRhiShaderResourceBindings `를 생성하는 것은 유효하지만, 이러한 객체는 ` QRhiCommandBuffer::setShaderResources()`와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 반드시 리소스가 포함된, 레이아웃 호환이 가능한 다른 ` QRhiShaderResourceBindings `와 함께 사용해야 하며, 이를 ` QRhiCommandBuffer::setShaderResources()`에 전달해야 합니다.
참고: 이미지 로드/저장 기능은 컴퓨트 스테이지와 프래그먼트 스테이지 내에서만 사용할 수 있습니다.
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::imageLoadStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex, int level)
지정된 binding 번호와 파이프라인 stage 을 가진 읽기/쓰기 스토리지 이미지에 대한 셰이더 리소스 바인딩을 반환합니다. 이미지 로드/저장 연산은 지정된 level 의 모든 레이어에 접근할 수 있습니다. (따라서 텍스처가 큐브맵인 경우, 셰이더는 image2D 대신 imageCube를 사용해야 합니다.)
참고: tex 가 null이 아닌경우 , 반드시 QRhiTexture::UsedWithLoadStore 를 사용하여 생성된 것이어야 합니다.
참고: ` tex `는 null일 수 있습니다. 리소스가 지정되지 않은 상태로 ` QRhiShaderResourceBindings `를 생성하는 것은 유효하지만, 이러한 객체는 ` QRhiCommandBuffer::setShaderResources()`와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 반드시 리소스가 포함된, 레이아웃 호환되는 다른 ` QRhiShaderResourceBindings `와 함께 사용되어야 하며, 해당 ` `는 ` QRhiCommandBuffer::setShaderResources()`에 전달되어야 합니다.
참고: 이미지 로드/저장 기능은 컴퓨트 스테이지와 프래그먼트 스테이지 내에서만 사용할 수 있습니다.
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::imageStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex, int level)
지정된 binding 번호와 파이프라인 stage 을 가진 쓰기 전용 스토리지 이미지에 대한 셰이더 리소스 바인딩을 반환합니다. 이미지 저장 작업은 지정된 level 의 모든 레이어에 액세스할 수 있습니다. (따라서 텍스처가 큐브맵인 경우, 셰이더는 image2D 대신 imageCube를 사용해야 합니다.)
참고: tex 가 null이 아닐경우 , 반드시 QRhiTexture::UsedWithLoadStore 를 사용하여 생성된 것이어야 합니다.
참고: ` tex `는 null일 수 있습니다. 리소스가 지정되지 않은 상태로 ` QRhiShaderResourceBindings `를 생성하는 것은 유효하지만, 이러한 객체는 ` QRhiCommandBuffer::setShaderResources()`와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 반드시 리소스가 포함된, 레이아웃 호환이 가능한 다른 ` QRhiShaderResourceBindings `와 함께 ` QRhiCommandBuffer::setShaderResources()`에 전달되어야 합니다.
참고: 이미지 로드/저장 기능은 컴퓨트 스테이지와 프래그먼트 스테이지 내에서만 사용할 수 있습니다.
bool QRhiShaderResourceBinding::isLayoutCompatible(const QRhiShaderResourceBinding &other) const
레이아웃이 other 와 호환되는 경우 true 를 반환합니다. 이 레이아웃에는 실제 리소스(예: 버퍼 또는 텍스처)와 관련 매개변수(예: 오프셋 또는 크기)는 포함되지 않습니다.
예를 들어, 아래의 ` a `과 ` b `은 서로 같지는 않지만, 레이아웃 측면에서는 호환됩니다:
auto a = QRhiShaderResourceBinding::uniformBuffer(0, QRhiShaderResourceBinding::VertexStage, buffer);
auto b = QRhiShaderResourceBinding::uniformBuffer(0, QRhiShaderResourceBinding::VertexStage, someOtherBuffer, 256);[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::sampledTexture(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex, QRhiSampler *sampler)
binding, stage, tex, sampler 로 지정된 바인딩 번호, 파이프라인 스테이지, 텍스처 및 샘플러에 대한 셰이더 리소스 바인딩을 반환합니다.
참고: 이 함수는 count 을 1로 지정하여 sampledTextures()을 호출하는 것과 동일합니다.
참고: tex 및 sampler 는 null일 수 있습니다. 리소스가 지정되지 않은 QRhiShaderResourceBindings 를 생성하는 것은 유효하지만, 이러한 객체는 QRhiCommandBuffer::setShaderResources()와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 반드시 리소스가 지정된, 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 와 함께 QRhiCommandBuffer::setShaderResources()에 전달되어 사용되어야 합니다.
참고: 기본 그래픽 API에 따라셰이더가 16개 이상의 텍스처/샘플러를 사용할 수 없을 수도 있습니다. 렌더러 설계 시 이 엄격한 제한을 반드시 염두에 두어야 합니다. 이는 단일 바인딩 포인트(셰이더 레지스터)를 사용하며, 기본 그래픽 API에 따라 256~2048개의 텍스처를 포함할 수 있는 텍스처 배열에는 적용되지 않습니다. 그러나 텍스처 배열( sampledTextures() 참조)은 이 점에서 동일한 수의 개별 텍스처를 사용하는 것과 다르지 않습니다.
sampledTextures()도 참조하십시오 .
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::sampledTextures(int binding, QRhiShaderResourceBinding::StageFlags stage, int count, const QRhiShaderResourceBinding::TextureAndSampler *texSamplers)
지정된 바인딩 번호, 파이프라인 단계, 그리고 binding, stage, count, texSamplers 로 지정된 텍스처-샘플러 쌍의 배열에 대한 셰이더 리소스 바인딩을 반환합니다.
참고: count 은 1 이상 16 이하여야 합니다.
참고: count 가 1일때 , 이 함수는 sampledTexture()과 동일합니다.
이 함수는 결합된 이미지 샘플러 배열이 관련될 때 사용됩니다. 예를 들어, GLSL에서 ` layout(binding = 5) uniform sampler2D shadowMaps[8]; `는 결합된 이미지 샘플러 배열을 선언합니다. 이때 애플리케이션은 바인딩 포인트 5에 대한 ` QRhiShaderResourceBinding `를 제공해야 하며, 이를 위해 ` count `을 8로 설정하고 배열의 각 요소에 대해 유효한 텍스처와 샘플러를 지정하여 이 함수를 호출해야 합니다.
경고: 배열의모든 요소를 반드시 지정해야 합니다. 위 예제의 경우, 유일하게 유효하고 이식 가능한 방법은 count 을 8로 설정하여 이 함수를 호출하는 것입니다. 또한, 모든 QRhiTexture 및 QRhiSampler 인스턴스는 유효해야 하며, 이는 nullptr이 허용되지 않는 값임을 의미합니다. 이는 Vulkan과 같은 일부 기반 API가 디스크립터 배열의 각 요소에 대해 유효한 이미지 및 샘플러 객체를 요구하기 때문입니다. 일부 배열 요소가 (셰이더에서 액세스되지 않아) 관련이 없는 경우, 애플리케이션에서는 "더미" 샘플러와 텍스처를 제공하는 것이 좋습니다.
참고: ` texSamplers `는 `null`일 수 있습니다. 리소스가 지정되지 않은 ` QRhiShaderResourceBindings `을 생성하는 것은 유효하지만, 이러한 객체는 ` QRhiCommandBuffer::setShaderResources()`와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 반드시 리소스가 포함된, 레이아웃이 호환되는 다른 ` QRhiShaderResourceBindings `와 함께 사용되어야 하며, 해당 ` `는 ` QRhiCommandBuffer::setShaderResources()`에 전달되어야 합니다.
sampledTexture()도 참조하십시오 .
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::sampler(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiSampler *sampler)
binding, stage, sampler 로 지정된 바인딩 번호, 파이프라인 스테이지 및 샘플러에 대한 셰이더 리소스 바인딩을 반환합니다.
참고: sampler 는 null일 수 있습니다. 리소스가 지정되지 않은 QRhiShaderResourceBindings 를 생성하는 것은 유효하지만, 이러한 객체는 QRhiCommandBuffer::setShaderResources()와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 반드시 리소스가 포함된, 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 와 함께 QRhiCommandBuffer::setShaderResources()에 전달하여 사용해야 합니다.
개별 샘플러의 배열은 지원되지 않습니다.
이는 개별 샘플러 객체에 대한 바인딩을 생성하는 반면, sampledTexture()은 결합된 이미지 샘플러에 적합합니다. Vulkan 호환 GLSL 코드에서 개별 샘플러는 sampler2D 대신 sampler 로 선언됩니다: layout(binding = 2) uniform sampler samp;
texture2D 와 sampler 가 모두 존재하는 경우, 이를 함께 사용하여 텍스처를 샘플링할 수 있습니다: fragColor = texture(sampler2D(tex, samp), texcoord);.
참고: 기본 그래픽 API에 따라셰이더가 16개 이상의 샘플러를 사용할 수 없는 경우가 있습니다. 렌더러 설계 시 이 엄격한 제한 사항을 반드시 염두에 두어야 합니다.
texture()도 참조하십시오 .
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::texture(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex)
binding, stage, tex 로 지정된 바인딩 번호, 파이프라인 스테이지 및 텍스처에 대한 셰이더 리소스 바인딩을 반환합니다.
참고: 이 함수는 count 값을 1로 설정하여 textures()를 호출하는 것과 동일합니다.
참고: tex 은 null일 수 있습니다. 리소스가 지정되지 않은 QRhiShaderResourceBindings 을 생성하는 것은 유효하지만, 이러한 객체는 QRhiCommandBuffer::setShaderResources()과 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 반드시 리소스가 존재하는, 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 QRhiCommandBuffer::setShaderResources()에 전달되어야 합니다.
이는 별도의 텍스처(이미지) 객체에 대한 바인딩을 생성하는 반면, sampledTexture()는 결합된 이미지 샘플러에 적합합니다. Vulkan 호환 GLSL 코드에서는 별도의 텍스처를 sampler2D 대신 texture2D 로 선언합니다: layout(binding = 1) uniform texture2D tex;
참고: 기본 그래픽 API에 따라셰이더가 16개 이상의 텍스처를 사용할 수 없는 경우가 있습니다. 렌더러 설계 시 이 엄격한 제한을 반드시 염두에 두어야 합니다. 이는 단일 바인딩 포인트(셰이더 레지스터)를 사용하며, 기본 그래픽 API에 따라 256~2048개의 텍스처를 포함할 수 있는 텍스처 배열에는 적용되지 않습니다. 그러나 텍스처 배열( sampledTextures() 참조)은 이 점에서 동일한 수의 개별 텍스처를 사용하는 것과 다르지 않습니다.
textures() 및 sampler()도 참조하십시오 .
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::textures(int binding, QRhiShaderResourceBinding::StageFlags stage, int count, QRhiTexture **tex)
지정된 바인딩 번호, 파이프라인 단계, 그리고 binding, stage, count, tex 에 의해 지정된 (별개의) 텍스처 배열에 대한 셰이더 리소스 바인딩을 반환합니다.
참고: count 는 1 이상 16 이하여야 합니다.
참고: count 가 1일때 , 이 함수는 texture()과 동일합니다.
경고: 배열의모든 요소를 반드시 지정해야 합니다.
참고: tex 는 null일 수 있습니다. 리소스가 지정되지 않은 QRhiShaderResourceBindings 를 생성하는 것은 유효하지만, 이러한 객체는 QRhiCommandBuffer::setShaderResources()와 함께 사용할 수 없습니다. 그러나 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 항상 리소스가 지정된, 레이아웃 호환되는 다른 QRhiShaderResourceBindings 와 함께 QRhiCommandBuffer::setShaderResources()에 전달되어야 합니다.
texture() 및 sampler()도 참조하십시오 .
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::uniformBuffer(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf)
binding, stage, buf 로 지정된 바인딩 번호, 파이프라인 스테이지 및 버퍼에 대한 셰이더 리소스 바인딩을 반환합니다.
참고: ` buf `가 null이 아닐경우 , 반드시 ` QRhiBuffer::UniformBuffer`를 사용하여 생성된 것이어야 합니다.
참고: ` buf `는 `null`일 수 있습니다. 리소스가 지정되지 않은 ` QRhiShaderResourceBindings `을 생성하는 것은 유효하지만, 이러한 객체는 ` QRhiCommandBuffer::setShaderResources()`와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 항상 리소스가 포함된, 레이아웃 호환이 가능한 다른 ` QRhiShaderResourceBindings `와 함께 사용해야 하며, 해당 ` `는 ` QRhiCommandBuffer::setShaderResources()`에 전달되어야 합니다.
참고: buf 의 크기가 QRhi::MaxUniformBufferRange 에 명시된 제한을 초과할경우 , 예기치 않은 오류가 발생할 수 있습니다.
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::uniformBuffer(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 offset, quint32 size)
binding, stage, buf 로 지정된 바인딩 번호, 파이프라인 스테이지 및 버퍼에 대한 셰이더 리소스 바인딩을 반환합니다. 이 오버로드는 offset 및 size 로 지정된 영역만 바인딩합니다.
참고: 오프셋이 QRhi::ubufAlignment()에 정렬되도록 하는것은 사용자의책임입니다 .
참고: size 는 0보다 커야 합니다.
참고: buf 가 null이 아닌경우 , QRhiBuffer::UniformBuffer 를 사용하여 생성되었어야 합니다.
참고: ` buf `는 `null`일 수 있습니다. 리소스가 지정되지 않은 ` QRhiShaderResourceBindings `을 생성하는 것은 유효하지만, 이러한 객체는 ` QRhiCommandBuffer::setShaderResources()`와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 항상 리소스가 포함된, 레이아웃 호환이 가능한 다른 ` QRhiShaderResourceBindings `과 함께 ` QRhiCommandBuffer::setShaderResources()`에 전달되어야 합니다.
참고: size 가 QRhi::MaxUniformBufferRange 에 보고된 한도를 초과할경우 , 예기치 않은 오류가 발생할 수 있습니다.
[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::uniformBufferWithDynamicOffset(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 size)
binding, stage, buf 로 지정된 바인딩 번호, 파이프라인 스테이지 및 버퍼에 대한 셰이더 리소스 바인딩을 반환합니다. 유니폼 버퍼는 동적 오프셋을 갖는 것으로 간주됩니다. 동적 오프셋은 ` QRhiCommandBuffer::setShaderResources()`에서 지정할 수 있으므로, 버퍼에 대한 새로운 바인딩을 생성하지 않고도 다양한 오프셋 값을 사용할 수 있습니다. 바인딩된 영역의 크기는 ` size`로 지정됩니다. 비동적 오프셋과 마찬가지로, ` offset + size `는 ` buf`의 크기를 초과할 수 없습니다.
참고: buf 가 null이 아닌경우 , 반드시 QRhiBuffer::UniformBuffer 을 사용하여 생성된 것이어야 합니다.
참고: buf 는 null일 수 있습니다. 리소스가 지정되지 않은 QRhiShaderResourceBindings 를 생성하는 것은 유효하지만, 이러한 객체는 QRhiCommandBuffer::setShaderResources()와 함께 사용할 수 없습니다. 다만 파이프라인을 생성하는 데는 적합합니다. 이러한 파이프라인은 반드시 리소스가 포함된, 레이아웃 호환 가능한 다른 QRhiShaderResourceBindings 와 함께 사용되어야 하며, 이 는 QRhiCommandBuffer::setShaderResources()에 전달되어야 합니다.
참고: size 가 QRhi::MaxUniformBufferRange 에 보고된 한도를 초과할경우 , 예기치 않은 오류가 발생할 수 있습니다.
관련 비회원
[noexcept] size_t qHash(const QRhiShaderResourceBinding &key, size_t seed = 0)
seed 를 계산의 시드로 사용하여 key 에 대한 해시 값을 반환합니다.
[noexcept] bool operator!=(const QRhiShaderResourceBinding &a, const QRhiShaderResourceBinding &b)
두 QRhiShaderResourceBinding 객체 a 와 b 의 모든 바인딩이 동일하면 false 를 반환하고, 그렇지 않으면 true 를 반환합니다.
[noexcept] bool operator==(const QRhiShaderResourceBinding &a, const QRhiShaderResourceBinding &b)
a 와 b 라는 두 개의 ` QRhiShaderResourceBinding ` 객체의 내용이 동일한 경우 ` true `를 반환합니다. 여기에는 리소스(버퍼, 텍스처)와 관련 매개변수(오프셋, 크기)도 포함됩니다. 레이아웃(바인딩 포인트, 파이프라인 단계, 리소스 유형)만 비교하려면 대신 ` isLayoutCompatible()`를 사용하십시오.
© 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.