Вопрос

Как я понимаю, в ранних версиях Qt не было модулей, были отдельные классы с разными функциями, в том числе графическими.Поддержка Opengl была реализована в qt 1.2.Однако QPainter, QImage существовали в ранних версиях.Итак, правильно ли говорить, что эти классы являются нативными (другими словами, классами, которые были изначальными);классы opengl - неродные (в конце концов, это отдельная ветвь)?Я хотел бы узнать о дальнейшей эволюции Qtopengl как неродного и альтернативного способа создания 2D-графики в Qt, влиянии этого модуля на эволюцию нативных методов (для создания 2D-графики).

Это было полезно?

Решение

Итак, правильно ли говорить, что эти классы являются нативными?

Нет, это не так.

Причина этого в том, что "родной" будет означать разные вещи для разных людей.Это вопрос интерпретации.Смотрите на ваш другой вопрос, насколько мы запутались.

К настоящему времени, я думаю, вы имеете в виду "не-opengl" 2/3D под native.Вероятно, это означает программную растеризацию, а не непосредственное использование драйвера дисплея.Итак, все еще на уровне Qt, но без классов opengl в Qt.

Теперь настал момент, когда мы можем вернуться к QImage и QPainter.Да, QPainter - это, по сути, начальное поколение программного обеспечения для растеризации с тех времен, когда графические процессоры не были такими распространенными и дешевыми, как в наши дни.

В основном они выполняют рендеринг исключительно с помощью программных методов.То есть, он более ограничен, но он работал без более дорогого и менее распространенного оборудования.

(Это были времена Quake и других программных продуктов, забавные времена, если смотреть на это с сегодняшней точки зрения...)

Другие советы

Если под "нативным" вы подразумеваете "аппаратно поддерживаемый", то здесь уже не все так ясно.Обратите внимание, что QPainter можно использовать различные малярные машины для выполнения покраски, поэтому просто используйте QPainter само по себе это ничего не значит.

Если под "аппаратной поддержкой" подразумевается просто использование чего-то большего, чем устаревшие целочисленные или с плавающей запятой исполнительные блоки центрального процессора, то да, движок raster paint engine действительно использует различные SIMD / векторизованные операции там, где это доступно.Движок raster paint engine - это движок, используемый для рисования на QImage, QPixmap и не-GL QWidget.

Если под "аппаратной поддержкой" вы подразумеваете "рендеринг аппаратным обеспечением видеокарты", то вам нужно использовать движок OpenGL paint engine.Он используется, когда вы рисуете на QGLWidget или в QQuickPaintedItem.Конечно, рисунок по-прежнему определяется программным обеспечением - настройка геометрии и шейдеры - это всего лишь код!Это программное обеспечение работает на оборудовании, которое может выполнять его намного быстрее, чем процессоры общего назначения.

Учитывая, что конвейер OpenGL с фиксированной функцией в наши дни является более или менее историческим артефактом, не будет неправильным утверждать, что все рендеринг в Qt выполняется с использованием чисто программных методов, но программное обеспечение может работать на процессоре общего назначения, или использовать модули выполнения SIMD/vector на процессоре общего назначения, или может работать на графическом процессоре.

Следует также сказать, что типичные драйверы Windows в наши дни делают нет ускорьте рисование GDI/gdiplus, отличное от blits.Таким образом, при выполнении 2D-рисования с использованием растрового движка, особенно в старых версиях Windows, таких как XP, Qt может быть быстрее, чем 2D-рисование на собственной платформе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top