Класс QRenderPass
класс Qt3DRender::QRenderPassОборачивает проход отрисовки. Подробнее...
| Заголовок: | #include <QRenderPass> |
| CMake: | find_package(Qt6 COMPONENTS 3drender REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::3drender) |
| qmake: | QT += 3drender |
| С момента: | Qt 5.7 |
| Инициализируется из: | RenderPass |
| Наследуется от: | Qt3DCore::QNode |
Свойства
- shaderProgram : Qt3DRender::QShaderProgram*
Открытые функции
| QRenderPass(Qt3DCore::QNode *parent = nullptr) | |
| void | addFilterKey(Qt3DRender::QFilterKey *filterKey) |
| void | addParameter(Qt3DRender::QParameter *parameter) |
| void | addRenderState(Qt3DRender::QRenderState *state) |
| QList<Qt3DRender::QFilterKey *> | filterKeys() const |
| QList<Qt3DRender::QParameter *> | parameters() const |
| void | removeFilterKey(Qt3DRender::QFilterKey *filterKey) |
| void | removeParameter(Qt3DRender::QParameter *parameter) |
| void | removeRenderState(Qt3DRender::QRenderState *state) |
| QList<Qt3DRender::QRenderState *> | renderStates() const |
| Qt3DRender::QShaderProgram * | shaderProgram() const |
Открытые слоты
| void | setShaderProgram(Qt3DRender::QShaderProgram *shaderProgram) |
Сигналы
| void | shaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram) |
Связанные нечлены
| ParameterList |
Подробное описание
Класс Qt3DRender::QRenderPass определяет отдельный проход отрисовки — экземпляр выполнения программы шейдеров — используемый классом Qt3DRender::QTechnique. Проход отрисовки состоит из Qt3DRender::QShaderProgram, списка объектов Qt3DRender::QFilterKey, списка объектов Qt3DRender::QRenderState и списка объектов Qt3DRender::QParameter.
QRenderPass выполняет QShaderProgram с заданными QRenderState и QParameter, если хотя бы один из узлов QFilterKey ссылается на какой-либо узел QFilterKey в QRenderPassFilter, или если узлов QFilterKey нет, а в FrameGraph отсутствует QRenderPassFilter.
Если QRenderPass определяет QParameter, он будет перезаписан QParameter с тем же именем, если он существует в любом из QTechnique, QEffect, QMaterial, QTechniqueFilter, QRenderPassFilter, связанных с проходом во время выполнения. Это всё ещё может быть полезно для определения разумных значений по умолчанию.
Во время отрисовки для каждого листового узла FrameGraph записывается базовое состояние отрисовки путём накопления состояний, определённых всеми узлами QRenderStateSet в ветви FrameGraph. Каждый QRenderPass может переопределить это базовое состояние отрисовки, указав свои собственные узлы QRenderState.
// Create the render passes
QRenderPass *pass = new QRenderPass();
// Create shader program
QShaderProgram *glShader = new QShaderProgram();
// Set the shader on the render pass
pass->setShaderProgram(glShader);
// Create a FilterKey
QFilterKey *filterKey = new QFilterKey();
filterKey->setName(QStringLiteral("name"));
fitlerKey->setValue(QStringLiteral("zFillPass"));
// Add the FilterKey to the pass
pass->addFilterKey(filterKey);
// Create a QParameter
QParameter *colorParameter = new QParameter(QStringLiteral("color"), QColor::fromRgbF(0.0f, 0.0f, 1.0f, 1.0f));
// Add parameter to pass
pass->addParameter(colorParameter);
// Create a QRenderState
QDepthTest *depthTest = new QDepthTest();
// Add the render state to the pass
pass->addRenderState(depthTest); См. такжеQRenderPassFilter, QFilterKey, QParameter, QRenderState, QEffect и QTechnique.
Документация свойств
shaderProgram : Qt3DRender::QShaderProgram*
Определяет программу шейдеров, используемую для этого прохода отрисовки.
Функции доступа:
| Qt3DRender::QShaderProgram * | shaderProgram() const |
| void | setShaderProgram(Qt3DRender::QShaderProgram *shaderProgram) |
Сигнал уведомления:
| void | shaderProgramChanged(Qt3DRender::QShaderProgram *shaderProgram) |
Документация по функциям-членам
QRenderPass::QRenderPass(Qt3DCore::QNode *parent = nullptr)
Создаёт новый QRenderPass с указанным parent.
void QRenderPass::addFilterKey(Qt3DRender::QFilterKey *filterKey)
Добавляет filterKey в локальные ключи фильтра Qt3DRender::QRenderPass.
void QRenderPass::addParameter(Qt3DRender::QParameter *parameter)
Добавляет parameter в параметры прохода отрисовки.
void QRenderPass::addRenderState(Qt3DRender::QRenderState *state)
Добавляет состояние отрисовки state в проход отрисовки. Это означает, что при выполнении прохода во время отрисовки глобально установленное состояние отрисовки будет изменено состояниями, определёнными локально в Qt3DRender::QRenderPass.
Примечание: отсутствие узлов Qt3DRender::QRenderState в проходе приведёт к использованию глобально установленного состояния отрисовки для заданного пути выполнения ветви FrameGraph.
QList<Qt3DRender::QFilterKey *> QRenderPass::filterKeys() const
Возвращает список объектов Qt3DRender::QFilterKey, составляющих ключи фильтра Qt3DRender::QRenderPass.
QList<Qt3DRender::QParameter *> QRenderPass::parameters() const
Возвращает вектор текущих параметров прохода отрисовки
void QRenderPass::removeFilterKey(Qt3DRender::QFilterKey *filterKey)
Удаляет filterKey из локальных ключей фильтра Qt3DRender::QRenderPass.
void QRenderPass::removeParameter(Qt3DRender::QParameter *parameter)
Удаляет parameter из параметров прохода отрисовки.
void QRenderPass::removeRenderState(Qt3DRender::QRenderState *state)
Удаляет state из локального состояния отрисовки Qt3DRender::QRenderPass.
QList<Qt3DRender::QRenderState *> QRenderPass::renderStates() const
Возвращает список объектов состояния Qt3DRender::QRenderState, составляющих состояние отрисовки Qt3DRender::QRenderPass.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qt3drender-qrenderpass.html