QRhiShaderResourceBinding 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 |
공용 형
enum | StageFlag { VertexStage, TessellationControlStage, TessellationEvaluationStage, FragmentStage, ComputeStage, GeometryStage } |
flags | StageFlags |
enum | Type { UniformBuffer, SampledTexture, Texture, Sampler, ImageLoad, …, BufferLoadStore } |
공용 함수
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 을 참조하세요.
멤버 유형 문서
열거형 QRhiShaderResourceBinding::StageFlag
플래그 QRhiShaderResourceBinding::StageFlags
셰이더 리소스가 어느 스테이지에 표시되는지를 나타내는 플래그 값입니다.
Constant | 값 | 설명 |
---|---|---|
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
바인딩 포인트에 바인딩된 셰이더 리소스 유형을 지정합니다.
Constant | 값 | 설명 |
---|---|---|
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 | 스토리지 버퍼 로드 및 저장 |
멤버 함수 문서
[static]
QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferLoad(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf)
주어진 binding 번호와 파이프라인 stage 으로 읽기 전용 스토리지 버퍼에 대한 셰이더 리소스 바인딩을 반환합니다.
참고: buf 가 null이 아닌 경우, QRhiBuffer::StorageBuffer 로 생성된 것이어야 합니다.
참고: buf 는 null일 수 있습니다. 지정되지 않은 리소스로 QRhiShaderResourceBindings 를 생성하는 것은 유효하지만 이러한 객체는 QRhiCommandBuffer::setShaderResources()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
참고: 버퍼 로드/저장은 컴퓨팅 파이프라인 내에서만 사용할 수 있도록 보장됩니다. 일부 백엔드는 그래픽 파이프라인에서도 이러한 리소스를 사용할 수 있도록 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원되는 경우에도 장벽 및 동기화와 관련하여 예기치 않은 문제가 발생할 수 있습니다. 따라서 이러한 리소스를 컴퓨팅 이외의 셰이더와 함께 사용하지 마세요.
[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()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
참고: 버퍼 로드/저장은 컴퓨팅 파이프라인 내에서만 사용할 수 있도록 보장됩니다. 일부 백엔드는 그래픽 파이프라인에서도 이러한 리소스를 사용할 수 있도록 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원되는 경우에도 장벽 및 동기화와 관련하여 예기치 않은 문제가 발생할 수 있습니다. 따라서 이러한 리소스를 컴퓨팅 이외의 셰이더와 함께 사용하지 마세요.
[static]
QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferLoadStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf)
주어진 binding 번호와 파이프라인 stage 으로 읽기-쓰기 스토리지 버퍼에 대한 셰이더 리소스 바인딩을 반환합니다.
참고: buf 가 null이 아닌 경우, QRhiBuffer::StorageBuffer 로 생성된 것이어야 합니다.
참고: buf 는 null일 수 있습니다. 지정되지 않은 리소스로 QRhiShaderResourceBindings 를 생성하는 것은 유효하지만 이러한 객체는 QRhiCommandBuffer::setShaderResources()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
참고: 버퍼 로드/저장은 컴퓨팅 파이프라인 내에서만 사용할 수 있도록 보장됩니다. 일부 백엔드는 그래픽 파이프라인에서도 이러한 리소스를 사용할 수 있도록 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원되는 경우에도 장벽 및 동기화와 관련하여 예기치 않은 문제가 발생할 수 있습니다. 따라서 이러한 리소스를 컴퓨팅 이외의 셰이더와 함께 사용하지 마세요.
[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()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
참고: 버퍼 로드/저장은 컴퓨팅 파이프라인 내에서만 사용할 수 있도록 보장됩니다. 일부 백엔드는 그래픽 파이프라인에서도 이러한 리소스를 사용할 수 있도록 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원되는 경우에도 장벽 및 동기화와 관련하여 예기치 않은 문제가 발생할 수 있습니다. 따라서 이러한 리소스를 컴퓨팅 이외의 셰이더와 함께 사용하지 마세요.
[static]
QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf)
주어진 binding 번호와 파이프라인 stage 으로 쓰기 전용 스토리지 버퍼에 대한 셰이더 리소스 바인딩을 반환합니다.
참고: buf 가 null이 아닌 경우, QRhiBuffer::StorageBuffer 로 생성된 것이어야 합니다.
참고: buf 는 null일 수 있습니다. 지정되지 않은 리소스로 QRhiShaderResourceBindings 를 생성하는 것은 유효하지만 이러한 객체는 QRhiCommandBuffer::setShaderResources()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
참고: 버퍼 로드/저장은 컴퓨팅 파이프라인 내에서만 사용할 수 있도록 보장됩니다. 일부 백엔드는 그래픽 파이프라인에서도 이러한 리소스를 사용할 수 있도록 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원되는 경우에도 장벽 및 동기화와 관련하여 예기치 않은 문제가 발생할 수 있습니다. 따라서 이러한 리소스를 컴퓨팅 이외의 셰이더와 함께 사용하지 마세요.
[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()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
참고: 버퍼 로드/저장은 컴퓨팅 파이프라인 내에서만 사용할 수 있도록 보장됩니다. 일부 백엔드는 그래픽 파이프라인에서도 이러한 리소스를 사용할 수 있도록 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원되는 경우에도 장벽 및 동기화와 관련하여 예기치 않은 문제가 발생할 수 있습니다. 따라서 이러한 리소스를 컴퓨팅 이외의 셰이더와 함께 사용하지 마세요.
[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()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
참고: 이미지 로드/저장은 컴퓨트 파이프라인 내에서만 사용할 수 있도록 보장됩니다. 일부 백엔드는 그래픽 파이프라인에서도 이러한 리소스를 사용할 수 있도록 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원되는 경우에도 장벽 및 동기화와 관련하여 예기치 않은 문제가 발생할 수 있습니다. 따라서 이러한 리소스를 컴퓨팅 이외의 셰이더와 함께 사용하지 마세요.
[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()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
참고: 이미지 로드/저장은 컴퓨트 파이프라인 내에서만 사용할 수 있도록 보장됩니다. 일부 백엔드는 그래픽 파이프라인에서도 이러한 리소스를 사용할 수 있도록 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원되는 경우에도 장벽 및 동기화와 관련하여 예기치 않은 문제가 발생할 수 있습니다. 따라서 이러한 리소스를 컴퓨팅 이외의 셰이더와 함께 사용하지 마세요.
[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()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
참고: 이미지 로드/저장은 컴퓨트 파이프라인 내에서만 사용할 수 있도록 보장됩니다. 일부 백엔드는 그래픽 파이프라인에서도 이러한 리소스를 사용할 수 있도록 지원할 수 있지만, 이는 보편적으로 지원되는 것은 아니며, 지원되는 경우에도 장벽 및 동기화와 관련하여 예기치 않은 문제가 발생할 수 있습니다. 따라서 이러한 리소스를 컴퓨팅 이외의 셰이더와 함께 사용하지 마세요.
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()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
참고: 셰이더는 기본 그래픽 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];
은 결합된 이미지 샘플러의 배열을 선언합니다. 그러면 애플리케이션은 count 을 8로 설정하고 배열의 각 요소에 대해 유효한 텍스처 및 샘플러를 사용하여 이 함수를 호출하여 설정된 바인딩 포인트 5에 대해 QRhiShaderResourceBinding 을 제공해야 합니다.
경고: 배열의 모든 요소를 지정해야 합니다. 위의 예제에서 유일하게 유효한 이식 가능한 방법은 count 8로 이 함수를 호출하는 것입니다. 또한 QRhiTexture 및 QRhiSampler 인스턴스가 모두 유효해야 하므로 nullptr은 허용되는 값이 아닙니다. 이는 설명자 배열의 각 요소에 대해 유효한 이미지 및 샘플러 객체가 필요한 Vulkan과 같은 일부 기본 API 때문입니다. 일부 배열 요소가 셰이더에서 액세스되지 않아 관련성이 없는 경우 애플리케이션은 "더미" 샘플러와 텍스처를 제공하는 것이 좋습니다.
참고: texSamplers 은 null일 수 있습니다. 지정되지 않은 리소스로 QRhiShaderResourceBindings 을 생성하는 것은 유효하지만 이러한 객체는 QRhiCommandBuffer::setShaderResources()과 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
sampledTexture()도 참조하세요 .
[static]
QRhiShaderResourceBinding QRhiShaderResourceBinding::sampler(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiSampler *sampler)
binding, stage, sampler 에 지정된 바인딩 번호, 파이프라인 스테이지 및 샘플러에 대한 셰이더 리소스 바인딩을 반환합니다.
참고: sampler 은 null일 수 있습니다. 지정되지 않은 리소스로 QRhiShaderResourceBindings 를 생성하는 것은 유효하지만 이러한 객체는 QRhiCommandBuffer::setShaderResources()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
별도의 샘플러 배열은 지원되지 않습니다.
이는 별도의 샘플러 객체에 대한 바인딩을 생성하는 반면 sampledTexture()는 결합된 이미지 샘플러에 적합합니다. 벌칸 호환 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()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
이렇게 하면 별도의 텍스처(이미지) 객체에 대한 바인딩이 생성되는 반면 sampledTexture()는 결합된 이미지 샘플러에 적합합니다. 벌칸 호환 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()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
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()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
참고: 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()와 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
참고: 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()과 함께 사용할 수 없습니다. 그러나 파이프라인을 만드는 데는 적합합니다. 그런 다음 이러한 파이프라인은 항상 QRhiCommandBuffer::setShaderResources()에 전달된 리소스와 함께 레이아웃이 호환되는 다른 QRhiShaderResourceBindings 과 함께 사용해야 합니다.
참고: 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)
두 개의 QRhiShaderResourceBinding 객체 a 및 b 의 내용이 같으면 true
을 반환합니다. 여기에는 리소스(버퍼, 텍스처) 및 관련 파라미터(오프셋, 크기)도 포함됩니다. 레이아웃(바인딩 포인트, 파이프라인 단계, 리소스 유형)만 비교하려면 isLayoutCompatible()를 대신 사용하세요.
© 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.