이 페이지에서

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::VertexStage1 << 0버텍스 스테이지
QRhiShaderResourceBinding::TessellationControlStage1 << 1테셀레이션 제어(헐 셰이더) 단계
QRhiShaderResourceBinding::TessellationEvaluationStage1 << 2테셀레이션 평가(도메인 셰이더) 단계
QRhiShaderResourceBinding::FragmentStage1 << 4프래그먼트(픽셀 셰이더) 단계
QRhiShaderResourceBinding::ComputeStage1 << 5컴퓨트 스테이지
QRhiShaderResourceBinding::GeometryStage1 << 3지오메트리 단계

StageFlags 유형은 QFlags<StageFlag>에 대한 typedef입니다. 이 유형은 StageFlag 값들의 OR 조합을 저장합니다.

enum QRhiShaderResourceBinding::Type

바인딩 지점에 바인딩된 셰이더 리소스의 유형을 지정합니다.

상수값설명
QRhiShaderResourceBinding::UniformBuffer0유니폼 버퍼
QRhiShaderResourceBinding::SampledTexture1결합된 이미지 샘플러(텍스처와 샘플러 쌍). 기본이 되는 3D API와 관련된 셰이딩 언어가 이 개념을 지원하지 않는 경우(예: D3D 및 HLSL)에도, 셰이더 변환 레이어가 바인딩 포인트나 셰이더 레지스터의 적절한 변환 및 재매핑을 처리하므로 이 기능은 여전히 지원됩니다.
QRhiShaderResourceBinding::Texture2텍스처(별도)
QRhiShaderResourceBinding::Sampler3샘플러(별도)
QRhiShaderResourceBinding::ImageLoad4이미지 로드 (GLSL의 경우, 셰이더에 이미지 객체로 노출된 텍스처의 단일 레벨(하나의 레이어 또는 모든 레이어)에서 imageLoad()을 수행하는 것과 매핑됩니다)
QRhiShaderResourceBinding::ImageStore5이미지 저장 (GLSL의 경우, 이는 셰이더에 이미지 객체로 노출된 텍스처의 단일 레벨(및 하나 또는 모든 레이어)에 대해 imageStore() 또는 imageAtomic*()을 수행하는 것과 동일합니다)
QRhiShaderResourceBinding::ImageLoadStore6이미지 로드 및 저장
QRhiShaderResourceBinding::BufferLoad7저장 버퍼 로드 (GLSL에서는 셰이더 저장 버퍼에서 읽는 작업에 해당함)
QRhiShaderResourceBinding::BufferStore8저장 버퍼 저장 (GLSL에서는 셰이더 저장 버퍼에 쓰기 작업에 해당합니다)
QRhiShaderResourceBinding::BufferLoadStore9저장 버퍼 읽기 및 쓰기

멤버 함수 문서

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