En esta página

QRhiShaderStage Class

Especifica el tipo y el código de sombreado para una etapa de sombreado en el pipeline. 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 Type { Vertex, TessellationControl, TessellationEvaluation, Fragment, Compute, Geometry }

Funciones Públicas

QRhiShaderStage()
QRhiShaderStage(QRhiShaderStage::Type type, const QShader &shader, QShader::Variant v = QShader::StandardShader)
void setShader(const QShader &s)
void setShaderVariant(QShader::Variant v)
void setType(QRhiShaderStage::Type t)
QShader shader() const
QShader::Variant shaderVariant() const
QRhiShaderStage::Type type() const
size_t qHash(const QRhiShaderStage &key, size_t seed = 0)
bool operator!=(const QRhiShaderStage &a, const QRhiShaderStage &b)
bool operator==(const QRhiShaderStage &a, const QRhiShaderStage &b)

Descripción detallada

Cuando se configura un QRhiGraphicsPipeline, se especifica una colección de etapas de sombreado. El QRhiShaderStage contiene un QShader y algunos metadatos asociados, como la etapa de canalización de gráficos, y el shader variant a seleccionar. No es necesario especificar el lenguaje o versión del shader porque el backend QRhi en uso en tiempo de ejecución se encargará de elegir la versión de shader apropiada de la colección dentro de QShader.

El uso típico es en combinación con QRhiGraphicsPipeline::setShaderStages(), mostrado aquí con un enfoque simple para cargar el QShader desde archivos .qsb generados offline o en tiempo de compilación:

QShader getShader(const QString &name)
{
    QFile f(name);
    return f.open(QIODevice::ReadOnly) ? QShader::fromSerialized(f.readAll()) : QShader();
}

QShader vs = getShader("material.vert.qsb");
QShader fs = getShader("material.frag.qsb");
pipeline->setShaderStages({
    { QRhiShaderStage::Vertex, vs },
    { QRhiShaderStage::Fragment, fs }
});

Nota: Esta es una API RHI con garantías de compatibilidad limitadas, ver QRhi para más detalles.

Documentación de tipos de miembros

enum QRhiShaderStage::Type

Especifica el tipo de etapa del sombreador.

ConstanteValorDescripción
QRhiShaderStage::Vertex0Etapa de vértices
QRhiShaderStage::TessellationControl1Etapa de control de teselación (hull shader). Sólo debe utilizarse si se admite la función QRhi::Tessellation.
QRhiShaderStage::TessellationEvaluation2Etapa de evaluación de la teselación (sombreador de dominios). Sólo debe utilizarse si se admite la función QRhi::Tessellation.
QRhiShaderStage::Fragment4Etapa de fragmentación (sombreador de píxeles)
QRhiShaderStage::Compute5Etapa de cálculo. Sólo debe utilizarse si se admite la función QRhi::Compute.
QRhiShaderStage::Geometry3Fase de geometría. Sólo debe utilizarse si se admite la función QRhi::GeometryShader.

Documentación de las funciones miembro

[noexcept] QRhiShaderStage::QRhiShaderStage()

Construye una descripción de la etapa de sombreado para la etapa de vértices con un QShader vacío.

QRhiShaderStage::QRhiShaderStage(QRhiShaderStage::Type type, const QShader &shader, QShader::Variant v = QShader::StandardShader)

Construye una descripción de escenario shader con el type del escenario y el shader.

La variante del sombreador v por defecto es QShader::StandardShader. Un QShader contiene múltiples versiones fuente y binarias de un shader. Además, también puede contener variantes del shader con código ligeramente modificado. v puede utilizarse entonces para seleccionar la variante deseada.

void QRhiShaderStage::setShader(const QShader &s)

Establece la colección de sombreadores s.

Véase también shader().

void QRhiShaderStage::setShaderVariant(QShader::Variant v)

Establece la variante de shader solicitada v.

Véase también shaderVariant().

void QRhiShaderStage::setType(QRhiShaderStage::Type t)

Establece el tipo de escenario en t. En la práctica, los establecedores rara vez son necesarios. La mayoría de las aplicaciones utilizarán el constructor QRhiShaderStage en la mayoría de los casos.

Véase también type().

QShader QRhiShaderStage::shader() const

Devuelve el QShader que se utilizará para esta etapa en el canal de gráficos.

Véase también setShader().

QShader::Variant QRhiShaderStage::shaderVariant() const

Devuelve la variante del sombreador solicitada.

Véase también setShaderVariant().

QRhiShaderStage::Type QRhiShaderStage::type() const

Devuelve el tipo de escenario.

Véase también setType().

Relacionados No miembros

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

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

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

Devuelve false si los valores de los dos objetos QRhiShaderStage a y b son iguales; en caso contrario devuelve true.

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

Devuelve true si los valores de los dos objetos QRhiShaderStage 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.