Класс QParameter
класс Qt3DRender::QParameterПредоставляет хранилище для пары имя-значение. Это соответствует униформе шейдера. Подробнее...
| Заголовок: | #include <Qt3DRender/QParameter> |
| CMake: | find_package(Qt6 COMPONENTS 3drender REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
| qmake: | QT += 3drender |
| Инициализируется: | Parameter |
| Наследуется от: | Qt3DCore::QNode |
Свойства
Открытые функции
| QParameter(const QString &name, Qt3DRender::QAbstractTexture *texture, Qt3DCore::QNode *parent = nullptr) | |
| QParameter(const QString &name, const QVariant &value, Qt3DCore::QNode *parent = nullptr) | |
| QParameter(Qt3DCore::QNode *parent = nullptr) | |
| QString | name() const |
| QVariant | value() const |
Открытые слоты
| void | setName(const QString &name) |
| void | setValue(const QVariant &dv) |
Сигналы
| void | nameChanged(const QString &name) |
| void | valueChanged(const QVariant &value) |
Подробное описание
QParameter может быть использован QRenderPass, QTechnique, QEffect, QMaterial, QTechniqueFilter, QRenderPassFilter. Во время выполнения, в зависимости от выбранного шейдера для данного этапа рендеринга, значение, содержащееся в QParameter, будет преобразовано и загружено, если шейдер содержит униформу с именем, совпадающим с именем QParameter.
QParameter *param = new QParameter();
param->setName(QStringLiteral("diffuseColor"));
param->setValue(QColor::fromRgbF(0.0f, 0.0f, 1.0f, 1.0f));
// Alternatively you can create and set a QParameter this way
QParameter *param2 = new QParameter(QStringLiteral("diffuseColor"), QColor::fromRgbF(0.0f, 0.0f, 1.0f, 1.0f));
// Such QParameters will work with the following GLSL uniform shader declarations
// uniform vec4 diffuseColor;
// uniform vec3 diffuseColor;
// uniform vec2 diffuseColor;
// uniform float diffuseColor; Примечание: следует проявлять осторожность, чтобы убедиться, что значение, заключенное в QParameter, может быть фактически преобразовано в то, что ожидает реальная униформа. Присвоение значения, хранящегося как целое число, где реальная униформа шейдера имеет тип float, может привести к неопределенному поведению.
Примечание: если целевая униформа является массивом, имя должно быть именем униформы с [0] добавленным к нему.
Примечание: узел QParameter не может быть отключен.
QParameter *param = new QParameter();
QVariantList values = QVariantList() << 0.0f << 1.0f << 2.0f << 3.0f << 4.0f << 883.0f << 1340.0f << 1584.0f;
param->setName(QStringLiteral("diffuseValues[0]"));
param->setValue(values);
// Matching GLSL shader uniform declaration
// uniform float diffuseValues[8]; Что касается поддержки текстур, значение QParameter должно быть установлено на соответствующий подкласс QAbstractTexture, который соответствует типу выборки униформы шейдера.
QTexture2D *texture = new QTexture2D();
...
QParameter *param = new QParameter();
param->setName(QStringLiteral("diffuseTexture"));
param->setValue(QVariant::fromValue(texture));
// Works with the following GLSL uniform shader declaration
// uniform sampler2D diffuseTexture См. также QAbstractTexture.
Документация по свойствам
name : QString
Указывает имя параметра
Функции доступа:
| QString | name() const |
| void | setName(const QString &name) |
Сигнал уведомления:
| void | nameChanged(const QString &name) |
value : QVariant
Указывает значение параметра
Функции доступа:
| QVariant | value() const |
| void | setValue(const QVariant &dv) |
Сигнал уведомления:
| void | valueChanged(const QVariant &value) |
Документация по функциям-членам
QParameter::QParameter(const QString &name, Qt3DRender::QAbstractTexture *texture, Qt3DCore::QNode *parent = nullptr)
Создаёт новый QParameter со заданным parent, name и значением из texture.
QParameter::QParameter(const QString &name, const QVariant &value, Qt3DCore::QNode *parent = nullptr)
Создаёт новый QParameter со заданным parent, name и value.
QParameter::QParameter(Qt3DCore::QNode *parent = nullptr)
Создаёт новый QParameter со заданным parent.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qt3drender-qparameter.html