Spec-Zone.ru › Qt 5.6

Класс QSGGeometry

Класс QSGGeometry предоставляет низкоуровневое хранилище для графических примитивов в Qt Quick Scene Graph. Подробнее...

Заголовок: #include <QSGGeometry>
qmake: QT += quick
  • Список всех членов, включая унаследованные

Открытые типы

класс Атрибут
класс Набор атрибутов
класс Цветная точка 2D
класс Точка 2D
класс Текстурированная точка 2D
перечисление Паттерн данных { AlwaysUploadPattern, DynamicPattern, StaticPattern, StreamPattern }

Открытые функции

QSGGeometry(const QSGGeometry::AttributeSet &attributes, int vertexCount, int indexCount = 0, int indexType = GL_UNSIGNED_SHORT)
virtual ~QSGGeometry()
void allocate(int vertexCount, int indexCount = 0)
int attributeCount() const
const Attribute * attributes() const
GLenum drawingMode() const
int indexCount() const
void * indexData()
const void * indexData() const
uint * indexDataAsUInt()
const uint * indexDataAsUInt() const
quint16 * indexDataAsUShort()
const quint16 * indexDataAsUShort() const
DataPattern indexDataPattern() const
int indexType() const
float lineWidth() const
void markIndexDataDirty()
void markVertexDataDirty()
void setDrawingMode(GLenum mode)
void setIndexDataPattern(DataPattern p)
void setLineWidth(float width)
void setVertexDataPattern(DataPattern p)
int sizeOfIndex() const
int sizeOfVertex() const
int vertexCount() const
void * vertexData()
const void * vertexData() const
ColoredPoint2D * vertexDataAsColoredPoint2D()
const ColoredPoint2D * vertexDataAsColoredPoint2D() const
Point2D * vertexDataAsPoint2D()
const Point2D * vertexDataAsPoint2D() const
TexturedPoint2D * vertexDataAsTexturedPoint2D()
const TexturedPoint2D * vertexDataAsTexturedPoint2D() const
DataPattern vertexDataPattern() const

Статические публичные члены

const AttributeSet & defaultAttributes_ColoredPoint2D()
const AttributeSet & defaultAttributes_Point2D()
const AttributeSet & defaultAttributes_TexturedPoint2D()
void updateRectGeometry(QSGGeometry *g, const QRectF &rect)
void updateTexturedRectGeometry(QSGGeometry *g, const QRectF &rect, const QRectF &textureRect)

Подробное описание

Класс QSGGeometry предоставляет низкоуровневое хранилище для графических примитивов в Qt Quick Scene Graph.

Класс QSGGeometry хранит геометрию примитивов, отрисовываемых с помощью сцены. Он содержит данные вершин и, необязательно, данные индексов. Режим отрисовки геометрии задается с помощью setDrawingMode(), который напрямую отображает режим отрисовки OpenGL, такой как GL_TRIANGLE_STRIP, GL_TRIANGLES, или GL_POINTS.

Вершины могут быть простыми, такими как точки, определяемые значениями x и y, или более сложными, где каждая вершина содержит нормаль, текстурные координаты и 3D-позицию. QSGGeometry::AttributeSet используется для описания того, как строятся данные вершин. Набор атрибутов можно указать только при создании. Класс QSGGeometry предоставляет несколько удобных атрибутов и наборов атрибутов по умолчанию. Функция defaultAttributes_Point2D() возвращает набор атрибутов, используемых в обычных прямоугольниках сплошного цвета, а функция defaultAttributes_TexturedPoint2D возвращает атрибуты, используемые для текстурированной 2D-геометрии. Данные вершин хранятся внутри как void *, и к ним можно получить доступ с помощью функции vertexData(). Доступные удобные методы доступа для общих наборов атрибутов - vertexDataAsPoint2D() и vertexDataAsTexturedPoint2D(). Данные вершин выделяются путём передачи количества вершин в конструктор или путём вызова allocate() позже.

Объект QSGGeometry может необязательно содержать индексы целых чисел без знака 32-битного, 16-битного или 8-битного формата. Тип индекса должен быть указан во время создания и не может быть изменён.

Ниже приведён фрагмент кода, демонстрирующий, как можно создать геометрию, состоящую из вершин с позицией и цветом.

struct MyPoint2D {
    float x;
    float y;
    float r;
    float g;
    float b;
    float a;

    void set(float x_, float y_, float r_, float g_, float b_, float a_) {
        x = x_;
        y = y_;
        r = r_;
        g = g_;
        b = b_;
        a = a_;
    }
};

QSGGeometry::Attribute MyPoint2D_Attributes[] = {
    QSGGeometry::Attribute::create(0, 2, GL_FLOAT, true),
    QSGGeometry::Attribute::create(1, 4, GL_FLOAT, false)
};

QSGGeometry::AttributeSet MyPoint2D_AttributeSet = {
    2,
    sizeof(MyPoint2D),
    MyPoint2D_Attributes
};

...

geometry = new QSGGeometry(MyPoint2D_AttributeSet, 2);
geometry->setDrawingMode(GL_LINES);

MyPoint2D *vertices = static_cast<MyPoint2D *>(geometry->vertexData());
vertices[0].set(0, 0, 1, 0, 0, 1);
vertices[1].set(width(), height(), 0, 0, 1, 1);

Объект QSGGeometry представляет собой программный буфер и клиентский компонент с точки зрения рендеринга OpenGL, так как буферы, используемые в 2D графике, обычно состоят из многих небольших буферов, которые изменяются каждый кадр и не выигрывают от загрузки в графическую память. Однако QSGGeometry поддерживает подсказки для рендерера о том, что буфер должен быть загружен с помощью функций setVertexDataPattern() и setIndexDataPattern(). Будет ли учтена эта подсказка, зависит от конкретной реализации.

Примечание: Все классы с префиксом QSG должны использоваться только в потоке рендеринга графического сцены. Для получения дополнительной информации см. Графическая сцена и рендеринг.

См. также QSGGeometryNode и Графическая сцена — настраиваемая геометрия.

Документация типов членов

enum QSGGeometry::DataPattern

Перечисление DataPattern используется для указания шаблона использования данных вершин и индексов в объекте геометрии.

Константа Значение Описание
QSGGeometry::AlwaysUploadPattern 0 Данные всегда загружаются. Это означает, что пользователю не нужно явно помечать данные индексов и вершин как изменённые после их изменения. Это значение по умолчанию.
QSGGeometry::DynamicPattern 2 Данные многократно изменяются и отображаются много раз. Это подсказка, которая может улучшить производительность. При установке данного значения пользователь должен убедиться, что данные отмечаются как изменённые после их изменения.
QSGGeometry::StaticPattern 3 Данные изменяются один раз и отображаются много раз. Это подсказка, которая может улучшить производительность. При установке данного значения пользователь должен убедиться, что данные отмечаются как изменённые после их изменения.
QSGGeometry::StreamPattern 1 Данные изменяются почти каждый раз, когда они отображаются. Это подсказка, которая может улучшить производительность. При установке данного значения пользователь должен убедиться, что данные отмечаются как изменённые после их изменения.

Документация функций членов

QSGGeometry::QSGGeometry(const QSGGeometry::AttributeSet &attributes, int vertexCount, int indexCount = 0, int indexType = GL_UNSIGNED_SHORT)

Создаёт объект геометрии на основе attributes.

Объект выделяет место для vertexCount вершин на основе накопленного размера в attributes и для indexCount индексов.

indexType сопоставляется с типом индекса OpenGL и может быть GL_UNSIGNED_SHORT и GL_UNSIGNED_BYTE. В реализациях OpenGL, которые это поддерживают, таких как настольный OpenGL, также может быть использовано GL_UNSIGNED_INT.

Объекты геометрии создаются с GL_TRIANGLE_STRIP в качестве режима рисования по умолчанию.

Структура атрибутов предполагается как POD, и объект геометрии предполагает, что она не исчезнет. Управление памятью не используется.

[virtual] QSGGeometry::~QSGGeometry()

Удаляет объект геометрии и данные вершин и индексов, которые он выделил.

void QSGGeometry::allocate(int vertexCount, int indexCount = 0)

Изменяет размер данных вершин и индексов этого объекта геометрии, чтобы вместить vertexCount вершин и indexCount индексов.

Данные вершин и индексов будут недействительными после этого вызова, и вызывающая сторона должна пометить связанный узел геометрии как изменённый, вызвав node->markDirty(QSGNode::DirtyGeometry), чтобы гарантировать, что рендерер имеет возможность обновить внутренние буферы.

int QSGGeometry::attributeCount() const

Возвращает количество атрибутов в наборе атрибутов, используемом этой геометрией.

const Attribute *QSGGeometry::attributes() const

Возвращает массив с атрибутами этой геометрии. Размер массива задаётся с помощью attributeCount().

[static] const AttributeSet &QSGGeometry::defaultAttributes_ColoredPoint2D()

Функция-удобство, которая возвращает атрибуты, используемые для рисования 2D точек с цветом каждой вершины.

[static] const AttributeSet &QSGGeometry::defaultAttributes_Point2D()

Функция-удобство, которая возвращает атрибуты, используемые для рисования 2D точек с твёрдым цветом.

[static] const AttributeSet &QSGGeometry::defaultAttributes_TexturedPoint2D()

Функция-удобство, которая возвращает атрибуты, используемые для рисования 2D текстурированных точек.

GLenum QSGGeometry::drawingMode() const

Возвращает режим рисования этой геометрии.

Значение по умолчанию — GL_TRIANGLE_STRIP.

См. также setDrawingMode().

int QSGGeometry::indexCount() const

Возвращает количество индексов в этом объекте геометрии.

void *QSGGeometry::indexData()

Возвращает указатель на исходные данные индексов этого объекта геометрии.

См. также indexDataAsUShort() и indexDataAsUInt().

const void *QSGGeometry::indexData() const

Возвращает указатель на исходные данные индексов этого объекта геометрии.

См. также indexDataAsUShort() и indexDataAsUInt().

uint *QSGGeometry::indexDataAsUInt()

Функция-удобство для доступа к данным индексов как к изменяемому массиву 32-битных целых чисел без знака.

const uint *QSGGeometry::indexDataAsUInt() const

Функция-удобство для доступа к данным индексов как к неизменяемому массиву 32-битных целых чисел без знака.

quint16 *QSGGeometry::indexDataAsUShort()

Функция-удобство для доступа к данным индексов как к изменяемому массиву 16-битных целых чисел без знака.

const quint16 *QSGGeometry::indexDataAsUShort() const

Функция-удобство для доступа к данным индексов как к неизменяемому массиву 16-битных целых чисел без знака.

DataPattern QSGGeometry::indexDataPattern() const

Возвращает шаблон использования индексов в этой геометрии. Шаблон по умолчанию — AlwaysUploadPattern.

См. также setIndexDataPattern().

int QSGGeometry::indexType() const

Возвращает тип примитива, используемый для индексов в этом объекте геометрии.

float QSGGeometry::lineWidth() const

Получает текущую ширину линии или точки, используемую для этой геометрии. Это свойство применяется только к ширине линии, когда drawingMode имеет значение GL_LINES, GL_LINE_STRIP, или GL_LINE_LOOP. Для настольного OpenGL оно также применяется к размеру точки, когда drawingMode имеет значение GL_POINTS.

Значение по умолчанию — 1.0.

См. также setLineWidth() и drawingMode().

void QSGGeometry::markIndexDataDirty()

Помечает данные индексов в этой геометрии как изменённые, и они должны быть загружены заново.

Эта функция имеет эффект только в том случае, если шаблон использования для вершин — StaticData, и рендерер, рендеринг этой геометрии, загружает геометрию в объекты буферов вершин (VBO).

void QSGGeometry::markVertexDataDirty()

Помечает данные вершин в этой геометрии как изменённые, и они должны быть загружены заново.

Эта функция имеет эффект только в том случае, если шаблон использования для вершин — StaticData, и рендерер, рендеринг этой геометрии, загружает геометрию в объекты буферов вершин (VBO).

void QSGGeometry::setDrawingMode(GLenum mode)

Устанавливает mode, который будет использоваться для рисования этой геометрии.

Значение по умолчанию — GL_TRIANGLE_STRIP.

См. также drawingMode().

void QSGGeometry::setIndexDataPattern(DataPattern p)

Устанавливает шаблон использования индексов на p.

По умолчанию используется AlwaysUploadPattern. При изменении значения, отличного от значения по умолчанию, пользователь должен вызвать markIndexDataDirty() после изменения данных индекса, дополнительно к вызову QSGNode::markDirty() с QSGNode::DirtyGeometry.

См. также indexDataPattern().

void QSGGeometry::setLineWidth(float width)

Устанавливает ширину линии или точки для данной геометрии на значение width. Это свойство применяется только к ширине линии, когда drawingMode равен GL_LINES, GL_LINE_STRIP, или GL_LINE_LOOP. Для Desktop OpenGL оно также применяется к размеру точки, когда drawingMode равен GL_POINTS.

Примечание: Способ обработки ширины линии и размера точки зависит от реализации. Приложение не должно полагаться на эти значения, а вместо этого должно создавать треугольники или аналогичные фигуры для рисования областей. В OpenGL ES поддержка ширины линии ограничена, а размер точки не поддерживается.

См. также lineWidth() и drawingMode().

void QSGGeometry::setVertexDataPattern(DataPattern p)

Устанавливает шаблон использования вершин на p.

По умолчанию используется AlwaysUploadPattern. Если установлено значение, отличное от значения по умолчанию, пользователь должен вызвать markVertexDataDirty() после изменения данных вершин, дополнительно к вызову QSGNode::markDirty() с QSGNode::DirtyGeometry.

См. также vertexDataPattern().

int QSGGeometry::sizeOfIndex() const

Возвращает размер в байтах типа индекса.

Это значение равно 1, если тип индекса GL_UNSIGNED_BYTE, или 2, если тип индекса GL_UNSIGNED_SHORT. Для Desktop OpenGL также поддерживается значение GL_UNSIGNED_INT со значением 4.

int QSGGeometry::sizeOfVertex() const

Возвращает размер в байтах одной вершины.

Это значение берётся из атрибутов.

[static] void QSGGeometry::updateRectGeometry(QSGGeometry *g, const QRectF &rect)

Обновляет геометрию g с координатами из rect.

Функция предполагает, что объект геометрии содержит одну полосу треугольников с вершинами типа QSGGeometry::Point2D.

[static] void QSGGeometry::updateTexturedRectGeometry(QSGGeometry *g, const QRectF &rect, const QRectF &textureRect)

Обновляет геометрию g с координатами из rect и координатами текстуры из textureRect.

textureRect должна быть в нормализованных координатах.

Предполагается, что g представляет собой полосу треугольников из четырёх вершин типа QSGGeometry::TexturedPoint2D.

int QSGGeometry::vertexCount() const

Возвращает количество вершин в этом объекте геометрии.

void *QSGGeometry::vertexData()

Возвращает указатель на сырые данные вершин этого объекта геометрии.

См. также vertexDataAsPoint2D() и vertexDataAsTexturedPoint2D().

const void *QSGGeometry::vertexData() const

Возвращает указатель на сырые данные вершин этого объекта геометрии.

См. также vertexDataAsPoint2D() и vertexDataAsTexturedPoint2D().

ColoredPoint2D *QSGGeometry::vertexDataAsColoredPoint2D()

Функция-помощник для доступа к данным вершин как к изменяемому массиву QSGGeometry::ColoredPoint2D.

const ColoredPoint2D *QSGGeometry::vertexDataAsColoredPoint2D() const

Функция-помощник для доступа к данным вершин как к неизменяемому массиву QSGGeometry::ColoredPoint2D.

Point2D *QSGGeometry::vertexDataAsPoint2D()

Функция-помощник для доступа к данным вершин как к изменяемому массиву QSGGeometry::Point2D.

const Point2D *QSGGeometry::vertexDataAsPoint2D() const

Функция-помощник для доступа к данным вершин как к неизменяемому массиву QSGGeometry::Point2D.

TexturedPoint2D *QSGGeometry::vertexDataAsTexturedPoint2D()

Функция-помощник для доступа к данным вершин как к изменяемому массиву QSGGeometry::TexturedPoint2D.

const TexturedPoint2D *QSGGeometry::vertexDataAsTexturedPoint2D() const

Функция-помощник для доступа к данным вершин как к неизменяемому массиву QSGGeometry::TexturedPoint2D.

DataPattern QSGGeometry::vertexDataPattern() const

Возвращает шаблон использования вершин в этой геометрии. По умолчанию используется шаблон AlwaysUploadPattern.

См. также setVertexDataPattern().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qsggeometry.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API