En esta página

QRhiShaderResourceBinding Class

Describe el recurso de sombreado para un único punto de enlace. Más...

Cabecera: #include <rhi/qrhi.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS GuiPrivate)
target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate)
qmake: QT += gui-private
Desde: Qt 6.6

Tipos Públicos

enum StageFlag { VertexStage, TessellationControlStage, TessellationEvaluationStage, FragmentStage, ComputeStage, GeometryStage }
flags StageFlags
enum Type { UniformBuffer, SampledTexture, Texture, Sampler, ImageLoad, …, BufferLoadStore }

Funciones Públicas

bool isLayoutCompatible(const QRhiShaderResourceBinding &other) const

Miembros públicos estáticos

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)

Descripción Detallada

Un QRhiShaderResourceBinding no puede ser construido directamente. En su lugar, utiliza las funciones estáticas como uniformBuffer() o sampledTexture() para obtener una instancia.

Nota: Se trata de una API RHI con garantías de compatibilidad limitadas, véase QRhi para más detalles.

Documentación de tipos de miembros

enum QRhiShaderResourceBinding::StageFlag
flags QRhiShaderResourceBinding::StageFlags

Valores de bandera para indicar en qué etapas es visible el recurso shader

ConstanteValorDescripción
QRhiShaderResourceBinding::VertexStage1 << 0Etapa de vértices
QRhiShaderResourceBinding::TessellationControlStage1 << 1Etapa de control de teselación (sombreador de cascos)
QRhiShaderResourceBinding::TessellationEvaluationStage1 << 2Etapa de evaluación de la teselación (sombreador de dominios)
QRhiShaderResourceBinding::FragmentStage1 << 4Etapa de fragmentación (sombreador de píxeles)
QRhiShaderResourceBinding::ComputeStage1 << 5Etapa de cálculo
QRhiShaderResourceBinding::GeometryStage1 << 3Etapa de geometría

El tipo StageFlags es un typedef para QFlags<StageFlag>. Almacena una combinación OR de valores StageFlag.

enum QRhiShaderResourceBinding::Type

Especifica el tipo de recurso de sombreado vinculado a un punto de enlace

ConstanteValorDescripción
QRhiShaderResourceBinding::UniformBuffer0Búfer uniforme
QRhiShaderResourceBinding::SampledTexture1Muestreador de imagen combinado (un par de textura y muestreador). Incluso cuando el lenguaje de sombreado asociado con la API 3D subyacente no tiene soporte para este concepto (por ejemplo, D3D y HLSL), esto sigue siendo compatible porque la capa de traducción del sombreador se encarga de la traducción y reasignación apropiadas de los puntos de enlace o registros del sombreador.
QRhiShaderResourceBinding::Texture2Textura (separada)
QRhiShaderResourceBinding::Sampler3Muestreador (independiente)
QRhiShaderResourceBinding::ImageLoad4Carga de la imagen (con GLSL esto equivale a hacer imageLoad() en un solo nivel - y una o todas las capas - de una textura expuesta al shader como un objeto de imagen)
QRhiShaderResourceBinding::ImageStore5Almacenamiento de imágenes (con GLSL esto equivale a hacer imageStore() o imageAtomic*() en un único nivel - y una o todas las capas - de una textura expuesta al shader como objeto imagen)
QRhiShaderResourceBinding::ImageLoadStore6Carga y almacenamiento de imágenes
QRhiShaderResourceBinding::BufferLoad7Carga del buffer de almacenamiento (con GLSL esto equivale a leer de un buffer de almacenamiento del shader)
QRhiShaderResourceBinding::BufferStore8Almacenamiento en memoria intermedia (con GLSL esto equivale a escribir en una memoria intermedia de sombreado)
QRhiShaderResourceBinding::BufferLoadStore9Carga y almacenamiento del búfer de almacenamiento

Documentación de las funciones miembro

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferLoad(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf)

Devuelve una vinculación de recursos de sombreado para un búfer de almacenamiento de sólo lectura con el número binding y el canal stage dados.

Nota: Cuando buf no es nulo, debe haber sido creado con QRhiBuffer::StorageBuffer.

Nota: buf puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. Dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con los recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Nota: Sólo se garantiza que la carga/almacenamiento en búfer esté disponible dentro de un canal de cálculo. Mientras que algunos backends pueden soportar el uso de estos recursos en un pipeline gráfico también, esto no es universalmente soportado, e incluso cuando lo es, pueden surgir problemas inesperados cuando se trata de barreras y sincronización. Por lo tanto, evite el uso de estos recursos con shaders que no sean de cálculo.

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferLoad(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 offset, quint32 size)

Devuelve una vinculación de recursos de sombreado para un búfer de almacenamiento de sólo lectura con el número binding y el canal stage dados. Esta sobrecarga vincula sólo una región, como se especifica en offset y size.

Nota: Cuando buf no es nulo, debe haber sido creado con QRhiBuffer::StorageBuffer.

Nota: buf puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero tal objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. Dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con los recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Nota: Sólo se garantiza que la carga/almacenamiento en búfer esté disponible dentro de un canal de cálculo. Mientras que algunos backends pueden soportar el uso de estos recursos en un pipeline gráfico también, esto no es universalmente soportado, e incluso cuando lo es, pueden surgir problemas inesperados cuando se trata de barreras y sincronización. Por lo tanto, evite el uso de estos recursos con shaders que no sean de cálculo.

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferLoadStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf)

Devuelve una vinculación de recursos de sombreado para un búfer de almacenamiento de lectura-escritura con el número binding y el canal stage dados.

Nota: Cuando buf no es nulo, debe haber sido creado con QRhiBuffer::StorageBuffer.

Nota: buf puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. Dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con los recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Nota: Sólo se garantiza que la carga/almacenamiento en búfer esté disponible dentro de un canal de cálculo. Mientras que algunos backends pueden soportar el uso de estos recursos en un pipeline gráfico también, esto no es universalmente soportado, e incluso cuando lo es, pueden surgir problemas inesperados cuando se trata de barreras y sincronización. Por lo tanto, evite el uso de estos recursos con shaders que no sean de cálculo.

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferLoadStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 offset, quint32 size)

Devuelve una vinculación de recursos de sombreado para un búfer de almacenamiento de lectura-escritura con el número binding y el canal stage dados. Esta sobrecarga sólo vincula una región, como se especifica en offset y size.

Nota: Cuando buf no es nulo, debe haber sido creado con QRhiBuffer::StorageBuffer.

Nota: buf puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero tal objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. Dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con los recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Nota: Sólo se garantiza que la carga/almacenamiento en búfer esté disponible dentro de un canal de cálculo. Mientras que algunos backends pueden soportar el uso de estos recursos en un pipeline gráfico también, esto no es universalmente soportado, e incluso cuando lo es, pueden surgir problemas inesperados cuando se trata de barreras y sincronización. Por lo tanto, evite el uso de estos recursos con shaders que no sean de cálculo.

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf)

Devuelve una vinculación de recursos de sombreado para un búfer de almacenamiento de sólo escritura con el número binding y el canal stage dados.

Nota: Cuando buf no es nulo, debe haber sido creado con QRhiBuffer::StorageBuffer.

Nota: buf puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. Dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con los recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Nota: Sólo se garantiza que la carga/almacenamiento en búfer esté disponible dentro de un canal de cálculo. Mientras que algunos backends pueden soportar el uso de estos recursos en un pipeline gráfico también, esto no es universalmente soportado, e incluso cuando lo es, pueden surgir problemas inesperados cuando se trata de barreras y sincronización. Por lo tanto, evite el uso de estos recursos con shaders que no sean de cálculo.

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::bufferStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 offset, quint32 size)

Devuelve una vinculación de recursos de sombreado para un búfer de almacenamiento de sólo escritura con el número binding y el canal stage dados. Esta sobrecarga vincula sólo una región, como se especifica en offset y size.

Nota: Cuando buf no es nulo, debe haber sido creado con QRhiBuffer::StorageBuffer.

Nota: buf puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero tal objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. Dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con los recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Nota: Sólo se garantiza que la carga/almacenamiento en búfer esté disponible dentro de un canal de cálculo. Mientras que algunos backends pueden soportar el uso de estos recursos en un pipeline gráfico también, esto no es universalmente soportado, e incluso cuando lo es, pueden surgir problemas inesperados cuando se trata de barreras y sincronización. Por lo tanto, evite el uso de estos recursos con shaders que no sean de cálculo.

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::imageLoad(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex, int level)

Devuelve una vinculación de recursos shader para una imagen de almacenamiento de sólo lectura con el número binding y el pipeline stage dados. Las operaciones de carga de la imagen tendrán acceso a todas las capas del level especificado. (por lo que si la textura es un cubemap, el shader debe usar imageCube en lugar de image2D)

Nota: Cuando tex no es nulo, debe haber sido creado con QRhiTexture::UsedWithLoadStore.

Nota: tex puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. En ese caso, dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Nota: La carga/almacenamiento de imágenes sólo está disponible en las etapas de cálculo y fragmentación.

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::imageLoadStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex, int level)

Devuelve una vinculación de recursos de sombreado para una imagen de almacenamiento de lectura/escritura con el número binding y el pipeline stage dados. Las operaciones de carga/almacenamiento de la imagen tendrán acceso a todas las capas del level especificado. (por lo que si la textura es un cubemap, el shader debe usar imageCube en lugar de image2D)

Nota: Cuando tex no es nulo, debe haber sido creado con QRhiTexture::UsedWithLoadStore.

Nota: tex puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. En ese caso, dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Nota: La carga/almacenamiento de imágenes sólo está disponible en las etapas de cálculo y fragmentación.

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::imageStore(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex, int level)

Devuelve una vinculación de recursos de sombreado para una imagen de almacenamiento de sólo escritura con el número binding y el pipeline stage dados. Las operaciones de almacenamiento de la imagen tendrán acceso a todas las capas del level especificado. (por lo que si la textura es un cubemap, el shader debe usar imageCube en lugar de image2D)

Nota: Cuando tex no es nulo, debe haber sido creado con QRhiTexture::UsedWithLoadStore.

Nota: tex puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. En ese caso, dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Nota: La carga/almacenamiento de imágenes sólo está disponible en las etapas de cálculo y fragmentación.

bool QRhiShaderResourceBinding::isLayoutCompatible(const QRhiShaderResourceBinding &other) const

Devuelve true si el diseño es compatible con other. El diseño no incluye el recurso real (como el búfer o la textura) ni los parámetros relacionados (como el desplazamiento o el tamaño).

Por ejemplo, a y b no son iguales, pero son compatibles en cuanto al diseño:

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)

Devuelve un shader resource binding para el número de binding, pipeline stages, textura y sampler especificados por binding, stage, tex, sampler.

Nota: Esta función es equivalente a llamar a sampledTextures() con un count de 1.

Nota: tex y sampler pueden ser nulos. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. En ese caso, dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Nota: Es posible que un sombreador no pueda consumir más de 16 texturas/muestreadores, dependiendo de la API gráfica subyacente. Este límite duro debe tenerse en cuenta en el diseño del renderizador. Esto no se aplica a las matrices de texturas que consumen un único punto de enlace (registro del shader) y pueden contener 256-2048 texturas, dependiendo de la API gráfica subyacente. Sin embargo, las matrices de texturas (véase sampledTextures()) no difieren en este sentido de la utilización del mismo número de texturas individuales.

Véase también sampledTextures().

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::sampledTextures(int binding, QRhiShaderResourceBinding::StageFlags stage, int count, const QRhiShaderResourceBinding::TextureAndSampler *texSamplers)

Devuelve un shader resource binding para el número de binding, pipeline stages, y el array de pares textura-sampler especificados por binding, stage, count, y texSamplers.

Nota: count debe ser al menos 1, y no mayor de 16.

Nota: Cuando count es 1, esta función es equivalente a sampledTexture().

Esta función es relevante cuando se trata de matrices de muestreadores de imágenes combinadas. Por ejemplo, en GLSL layout(binding = 5) uniform sampler2D shadowMaps[8]; declara una matriz de muestreadores de imágenes combinadas. Se espera que la aplicación proporcione un QRhiShaderResourceBinding para el punto de enlace 5, configurado llamando a esta función con count establecido en 8 y una textura y un muestreador válidos para cada elemento de la matriz.

Atención: Deben especificarse todos los elementos del array. Con el ejemplo anterior, el único enfoque válido y portable es llamar a esta función con un count de 8. Además, todas las instancias de QRhiTexture y QRhiSampler deben ser válidas, lo que significa que nullptr no es un valor aceptado. Esto se debe a que algunas de las API subyacentes, como Vulkan, requieren una imagen y un objeto muestreador válidos para cada elemento de las matrices de descriptores. Se recomienda a las aplicaciones que proporcionen muestreadores y texturas "ficticios" si algunos elementos de la matriz no son relevantes (debido a que no se accede a ellos en el sombreador).

Nota: texSamplers puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear pipelines. En ese caso, dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Véase también sampledTexture().

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::sampler(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiSampler *sampler)

Devuelve una vinculación de recursos de sombreado para el número de vinculación, las etapas de canalización y el muestreador especificados por binding, stage, sampler.

Nota: sampler puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no se puede utilizar con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. En ese caso, dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

No se admiten matrices de muestreadores independientes.

Esto crea un enlace para un objeto sampler separado, mientras que sampledTexture() es adecuado para samplers de imagen combinados. En el código GLSL compatible con Vulkan, los muestreadores independientes se declaran como sampler en lugar de sampler2D: layout(binding = 2) uniform sampler samp;

Con ambos texture2D y sampler presentes, pueden ser usados juntos para muestrear la textura: fragColor = texture(sampler2D(tex, samp), texcoord);.

Nota: Es posible que un sombreador no pueda consumir más de 16 muestreadores, dependiendo de la API gráfica subyacente. Este límite debe tenerse en cuenta en el diseño del renderizador.

Véase también texture().

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::texture(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiTexture *tex)

Devuelve un shader resource binding para el número de binding, pipeline stages y textura especificados por binding, stage, tex.

Nota: Esta función es equivalente a llamar a textures() con un count de 1.

Nota: tex puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. Tal canalización debe ser utilizada siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Esto crea un enlace para un objeto de textura (imagen) separado, mientras que sampledTexture() es adecuado para muestreadores de imagen combinados. En código GLSL compatible con Vulkan, las texturas separadas se declaran como texture2D en lugar de sampler2D: layout(binding = 1) uniform texture2D tex;

Nota: Es posible que un sombreador no pueda consumir más de 16 texturas, dependiendo de la API gráfica subyacente. Este límite debe tenerse en cuenta en el diseño del renderizador. Esto no se aplica a las matrices de texturas que consumen un único punto de enlace (registro del shader) y pueden contener 256-2048 texturas, dependiendo de la API gráfica subyacente. Sin embargo, las matrices de texturas (véase sampledTextures()) no difieren en este sentido de la utilización del mismo número de texturas individuales.

Véase también textures() y sampler().

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::textures(int binding, QRhiShaderResourceBinding::StageFlags stage, int count, QRhiTexture **tex)

Devuelve un recurso de sombreado vinculante para el número de vinculación, las etapas de canalización y la matriz de texturas (independientes) especificados por binding, stage, count y tex.

Nota: count debe ser al menos 1, y no mayor de 16.

Nota: Cuando count es 1, esta función es equivalente a texture().

Advertencia: Deben especificarse todos los elementos de la matriz.

Nota: tex puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. En ese caso, dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Véase también texture() y sampler().

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::uniformBuffer(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf)

Devuelve una vinculación de recursos de sombreado para el número de vinculación, las etapas de canalización y el búfer especificados por binding, stage y buf.

Nota: Cuando buf no es nulo, debe haber sido creado con QRhiBuffer::UniformBuffer.

Nota: buf puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. En ese caso, dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Nota: Si el tamaño de buf excede el límite indicado para QRhi::MaxUniformBufferRange, pueden producirse errores inesperados.

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::uniformBuffer(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 offset, quint32 size)

Devuelve una vinculación de recursos de sombreado para el número de vinculación, las etapas de canalización y el búfer especificados por binding, stage y buf. Esta sobrecarga sólo vincula una región, como se especifica en offset y size.

Nota: Es responsabilidad del usuario asegurarse de que el desplazamiento esté alineado con QRhi::ubufAlignment().

Nota: size debe ser mayor que 0.

Nota: Cuando buf no es nulo, debe haber sido creado con QRhiBuffer::UniformBuffer.

Nota: buf puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. En ese caso, dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Nota: Si size excede el límite indicado para QRhi::MaxUniformBufferRange, pueden producirse errores inesperados.

[static] QRhiShaderResourceBinding QRhiShaderResourceBinding::uniformBufferWithDynamicOffset(int binding, QRhiShaderResourceBinding::StageFlags stage, QRhiBuffer *buf, quint32 size)

Devuelve una vinculación de recursos de sombreado para el número de vinculación, las etapas de canalización y el búfer especificados por binding, stage y buf. Se supone que el búfer uniforme tiene un desplazamiento dinámico. El desplazamiento dinámico se puede especificar en QRhiCommandBuffer::setShaderResources(), lo que permite utilizar valores de desplazamiento variables sin crear nuevos enlaces para el búfer. El tamaño de la región delimitada se especifica en size. Al igual que con los desplazamientos no dinámicos, offset + size no puede superar el tamaño de buf.

Nota: Cuando buf no es nulo, debe haber sido creado con QRhiBuffer::UniformBuffer.

Nota: buf puede ser nulo. Es válido crear un QRhiShaderResourceBindings con recursos no especificados, pero dicho objeto no puede utilizarse con QRhiCommandBuffer::setShaderResources(). Sin embargo, es adecuado para crear canalizaciones. En ese caso, dicha tubería debe utilizarse siempre junto con otra, compatible con el diseño QRhiShaderResourceBindings con recursos presentes pasados a QRhiCommandBuffer::setShaderResources().

Nota: Si size supera el límite indicado para QRhi::MaxUniformBufferRange, pueden producirse errores inesperados.

No miembros relacionados

[noexcept] size_t qHash(const QRhiShaderResourceBinding &key, size_t seed = 0)

Devuelve el valor hash para key, utilizando seed para sembrar el cálculo.

[noexcept] bool operator!=(const QRhiShaderResourceBinding &a, const QRhiShaderResourceBinding &b)

Devuelve false si todas las vinculaciones de los dos objetos QRhiShaderResourceBinding a y b son iguales; en caso contrario devuelve true.

[noexcept] bool operator==(const QRhiShaderResourceBinding &a, const QRhiShaderResourceBinding &b)

Devuelve true si el contenido de los dos objetos QRhiShaderResourceBinding a y b es igual. Esto incluye también los recursos (buffer, textura) y los parámetros relacionados (offset, tamaño). Para comparar únicamente diseños (punto de enlace, etapa de la tubería, tipo de recurso), utilice isLayoutCompatible() en su lugar.

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