QRhiVertexInputAttribute Class
Describe un único elemento de entrada de vértice. 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 | Format { Float4, Float3, Float2, Float, UNormByte4, …, SShort } |
Funciones Públicas
| QRhiVertexInputAttribute() | |
| QRhiVertexInputAttribute(int binding, int location, QRhiVertexInputAttribute::Format format, quint32 offset, int matrixSlice = -1) | |
| int | binding() const |
| QRhiVertexInputAttribute::Format | format() const |
| int | location() const |
| int | matrixSlice() const |
| quint32 | offset() const |
| void | setBinding(int b) |
| void | setFormat(QRhiVertexInputAttribute::Format f) |
| void | setLocation(int loc) |
| void | setMatrixSlice(int slice) |
| void | setOffset(quint32 ofs) |
No miembros relacionados
| size_t | qHash(const QRhiVertexInputAttribute &key, size_t seed = 0) |
| bool | operator!=(const QRhiVertexInputAttribute &a, const QRhiVertexInputAttribute &b) |
| bool | operator==(const QRhiVertexInputAttribute &a, const QRhiVertexInputAttribute &b) |
Descripción detallada
Los miembros especifican el número de vinculación, la ubicación, el formato y el desplazamiento para un único elemento de entrada de vértice.
Nota: Para HLSL se asume que el sombreador de vértices traducido desde SPIR-V utiliza TEXCOORD<location> como semántica para cada entrada. Por lo tanto, no hay un nombre semántico y un índice separados.
Como ejemplo, supongamos un sombreador de vértices con las siguientes entradas:
layout(location = 0) in vec4 position; layout(location = 1) in vec2 texcoord;
Ahora supongamos que tenemos 3 componentes de posiciones de vértice (x, y, z) y 2 componentes de coordenadas de textura (u, v) se proporcionan en un formato no intercalado en un buffer (o buffers separados incluso). Una vez definidos dos bindings, los atributos podrían especificarse como:
QRhiVertexInputLayout inputLayout; inputLayout.setBindings({ { 3 * sizeof(float) }, { 2 * sizeof(float) } }); inputLayout.setAttributes({ { 0, 0, QRhiVertexInputAttribute::Float3, 0 }, { 1, 1, QRhiVertexInputAttribute::Float2, 0 } });
Una vez vinculado un conducto de gráficos con esta disposición de entrada de vértices, las entradas de vértices podrían configurarse como la siguiente para dibujar un cubo con 36 vértices, suponiendo que tenemos un único búfer con primero las posiciones y luego las coordenadas de textura:
const QRhiCommandBuffer::VertexInput vbufBindings[] = { { cubeBuf, 0 }, { cubeBuf, 36 * 3 * sizeof(float) } }; cb->setVertexInput(0, 2, vbufBindings);
Cuando se trabaja con datos intercalados, normalmente habrá un único enlace, con múltiples atributos referidos a ese mismo punto de enlace del buffer:
QRhiVertexInputLayout inputLayout; inputLayout.setBindings({ { 5 * sizeof(float) } }); inputLayout.setAttributes({ { 0, 0, QRhiVertexInputAttribute::Float3, 0 }, { 0, 1, QRhiVertexInputAttribute::Float2, 3 * sizeof(float) } });
y luego:
const QRhiCommandBuffer::VertexInput vbufBinding(interleavedCubeBuf, 0); cb->setVertexInput(0, 1, &vbufBinding);
Nota: Se trata de una API RHI con garantías de compatibilidad limitadas, véase QRhi para más detalles.
Véase también QRhiCommandBuffer::setVertexInput().
Documentación de tipos de miembros
enum QRhiVertexInputAttribute::Format
Especifica el tipo de datos del elemento.
| Constante | Valor | Descripción |
|---|---|---|
QRhiVertexInputAttribute::Float4 | 0 | Vector flotante de cuatro componentes |
QRhiVertexInputAttribute::Float3 | 1 | Vector flotante de tres componentes |
QRhiVertexInputAttribute::Float2 | 2 | Vector flotante de dos componentes |
QRhiVertexInputAttribute::Float | 3 | Float |
QRhiVertexInputAttribute::UNormByte4 | 4 | Vector byte normalizado sin signo de cuatro componentes |
QRhiVertexInputAttribute::UNormByte2 | 5 | Vector byte normalizado sin signo de dos componentes |
QRhiVertexInputAttribute::UNormByte | 6 | Byte normalizado sin signo |
QRhiVertexInputAttribute::UInt4 | 7 | Vector de enteros sin signo de cuatro componentes |
QRhiVertexInputAttribute::UInt3 | 8 | Vector entero sin signo de tres componentes |
QRhiVertexInputAttribute::UInt2 | 9 | Vector de enteros sin signo de dos componentes |
QRhiVertexInputAttribute::UInt | 10 | Entero sin signo |
QRhiVertexInputAttribute::SInt4 | 11 | Vector entero con signo de cuatro componentes |
QRhiVertexInputAttribute::SInt3 | 12 | Vector entero con signo de tres componentes |
QRhiVertexInputAttribute::SInt2 | 13 | Vector de enteros con signo de dos componentes |
QRhiVertexInputAttribute::SInt | 14 | Entero con signo |
QRhiVertexInputAttribute::Half4 | 15 | Vector flotante de cuatro componentes y media precisión (16 bits) |
QRhiVertexInputAttribute::Half3 | 16 | Vector flotante de tres componentes y media precisión (16 bits) |
QRhiVertexInputAttribute::Half2 | 17 | Vector float de dos componentes y media precisión (16 bits) |
QRhiVertexInputAttribute::Half | 18 | Flotante de media precisión (16 bits) |
QRhiVertexInputAttribute::UShort4 | 19 | Vector entero de cuatro componentes sin signo (16 bits) |
QRhiVertexInputAttribute::UShort3 | 20 | Vector entero de tres componentes (16 bits) sin signo corto |
QRhiVertexInputAttribute::UShort2 | 21 | Vector de enteros sin signo de dos componentes (16 bits) |
QRhiVertexInputAttribute::UShort | 22 | Entero corto sin signo (16 bits) |
QRhiVertexInputAttribute::SShort4 | 23 | Vector entero de cuatro componentes con signo corto (16 bits) |
QRhiVertexInputAttribute::SShort3 | 24 | Vector de enteros de tres componentes con signo corto (16 bits) |
QRhiVertexInputAttribute::SShort2 | 25 | Vector de enteros de dos componentes con signo corto (16 bits) |
QRhiVertexInputAttribute::SShort | 26 | Entero corto con signo (16 bits) |
Nota: La compatibilidad con atributos de coma flotante de media precisión se indica en tiempo de ejecución mediante el indicador de función QRhi::Feature::HalfAttributes.
Nota: Direct3D 11/12 admite atributos de entrada de 16 bits, pero no admite los tipos Half3, UShort3 o SShort3. Los backends D3D pasan Half3 como Half4, UShort3 como UShort4 y SShort3 como SShort4. Para garantizar la compatibilidad entre plataformas, las entradas de 16 bits deben rellenarse a 8 bytes.
Documentación de las funciones miembro
[constexpr noexcept] QRhiVertexInputAttribute::QRhiVertexInputAttribute()
Construye una descripción de atributo de entrada de vértice por defecto.
QRhiVertexInputAttribute::QRhiVertexInputAttribute(int binding, int location, QRhiVertexInputAttribute::Format format, quint32 offset, int matrixSlice = -1)
Construye una descripción de atributo de entrada de vértice con el número binding, location, format, y offset especificados.
matrixSlice debe ser -1 excepto cuando este atributo corresponde a una fila o columna de una matriz (por ejemplo, una matriz 4x4 se convierte en 4 vec4s, consumiendo 4 ubicaciones de entrada de vértice consecutivas), en cuyo caso es el índice de la fila o columna. location - matrixSlice debe ser siempre igual a location para la primera fila o columna de la matriz desenrollada.
int QRhiVertexInputAttribute::binding() const
Devuelve el índice del punto de enlace.
Véase también setBinding().
QRhiVertexInputAttribute::Format QRhiVertexInputAttribute::format() const
Devuelve el formato del elemento de entrada vértice.
Véase también setFormat().
int QRhiVertexInputAttribute::location() const
Devuelve la ubicación del elemento de entrada del vértice.
Véase también setLocation().
int QRhiVertexInputAttribute::matrixSlice() const
Devuelve el corte de la matriz si el elemento de entrada corresponde a una fila o columna de una matriz, o -1 si no es relevante.
Véase también setMatrixSlice().
quint32 QRhiVertexInputAttribute::offset() const
Devuelve el desplazamiento de bytes del elemento de entrada.
Véase también setOffset().
void QRhiVertexInputAttribute::setBinding(int b)
Establece el índice del punto de enlace en b. Por defecto se establece en 0.
Véase también binding().
void QRhiVertexInputAttribute::setFormat(QRhiVertexInputAttribute::Format f)
Establece el formato del elemento de entrada de vértices en f. Por defecto está establecido en Float4.
Véase también format().
void QRhiVertexInputAttribute::setLocation(int loc)
Establece la ubicación del elemento de entrada del vértice en loc. Por defecto está establecido en 0.
Véase también location().
void QRhiVertexInputAttribute::setMatrixSlice(int slice)
Establece la matriz slice. Por defecto se establece en -1, y debe establecerse en un valor >= 0 sólo cuando este atributo corresponda a una fila o columna de una matriz (por ejemplo, una matriz 4x4 se convierte en 4 vec4s, consumiendo 4 ubicaciones de entrada de vértice consecutivas), en cuyo caso es el índice de la fila o columna. location - matrixSlice debe ser siempre igual a location para la primera fila o columna de la matriz desenrollada.
Véase también matrixSlice().
void QRhiVertexInputAttribute::setOffset(quint32 ofs)
Establece el desplazamiento de bytes para el elemento de entrada en ofs.
Véase también offset().
No miembros relacionados
[noexcept] size_t qHash(const QRhiVertexInputAttribute &key, size_t seed = 0)
Devuelve el valor hash para key, utilizando seed para sembrar el cálculo.
[noexcept] bool operator!=(const QRhiVertexInputAttribute &a, const QRhiVertexInputAttribute &b)
Devuelve false si los valores de los dos objetos QRhiVertexInputAttribute a y b son iguales; en caso contrario devuelve true.
[noexcept] bool operator==(const QRhiVertexInputAttribute &a, const QRhiVertexInputAttribute &b)
Devuelve true si los valores de los dos objetos QRhiVertexInputAttribute a y b son iguales.
© 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.