Last visit 1 week, 5 days ago

mafulechka

mafulechka

Donate
Nov. 23, 2019, 4:02 a.m.

GameDev

Valve, Half-Life, VR, Tools

Последняя запись в серии Half-Life была очень давно, поэтому появилось больше инструментов для разработчиков на основе текущего внутреннего движка Valve Source 2.

Наряду с сегодняшним официальным представлением своей эксклюзивной игры для виртуальной реальности Half-Life: Alyx, Valve заметили, что вскоре разработчики смогут использовать набор инструментов Source 2 для создания собственного контента, включая среды, которые будут работать в будущей игре, хотя степень этих возможностей создания в некотором роде зависит от интерпретации.

Nov. 20, 2019, 4:05 a.m.

Qt

qt, QString, expression

В C++ привычно иметь operator+to perform string concatenation (оператор+выполнение конкатенации строк), независимо от того, используется ли стандартная библиотека (или STL) или Qt. Это позволяет писать такие вещи, как следующий фрагмент:

QString statement{"I'm not"};
QString number{"a number"};
QString space{" "};
QString period{". "};
QString result = statement + space + number + period;

Но это имеет большой недостаток - ненужное создание временных промежуточных результатов. А именно, в предыдущем примере есть одна временная строка для хранения результата оператора + и пустой части выражения, затем эта строка объединяется с числом, которое возвращает другую временную строку. Затем вторая временная строка соединяется с точкой, что дает окончательный результат, после которого временные уничтожаются.

Это означает, что есть почти столько же ненужных распределений и откреплений, сколько имеется обращений к operator+ (оператору+). Кроме того, копируются одни и те же данные несколько раз. Например, содержимое строки оператора сначала копируется в первый временный объект, затем копируется из первого временного объекта во второй, а затем из второго временного объекта в конечный результат.

Nov. 6, 2019, 5:36 a.m.

Qt

Qt, allocator, thread, performance

В первой части этой серии статей рассматривался аллокатор пула, оптимизированный для небольших выделений. Разработчики рассказали, что многое делают в Qt, выделяя экземпляры QEvent или QObject, и специализированный аллокатор может быть полезен и для их приложений. Пока что решения разработчиков Qt будут распределять целые страницы памяти по мере необходимости и раздавать фрагменты данных фиксированного размера, который указывается во время компиляции через параметр шаблона. Он поддерживает различные модели потоков, с различными компромиссами в отношении производительности, эффективности памяти и параллелизма. Разработчики получили очень многообещающие результаты, превзойдя аллокаторы общего назначения в 3-10 раз в многопоточных тестах.

Однако, с помощью аллокатора, который может обрабатывать только один размер блока и никогда не возвращает память обратно операционной системе, у разработчиков все еще есть путь, прежде чем они смогут реально поддерживать сценарии использования QEvent и QObject в Qt. Невозможно просто израсходовать библиотеку впустую и забрать память, или попросить разработчиков приложений реализовать оператор new/delete, чтобы иметь возможность выделять экземпляры своих больших подклассов.

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

Oct. 22, 2019, 5:06 a.m.

Qt

Qt, thread, performance, allocator

Код, на котором основана эта статья, находится в стадии разработки, с различными коммитами на рассмотрении в теме «Аллокатор». Обратите внимание, что в коде используются различные функции C++17.

Несколько месяцев назад разработчики Qt Company работали над исправлением того, как QHostInfo отправляет результаты вызывающей стороне, что привело к небольшой оптимизации того, как выделяется память для аргументов в QMetaCallEvent. Разработчики используют объекты этого типа в соединениях сигнал/слот с очередями, и некоторое время, проведенное в этом коде, напомнило, что в Qt есть схема размещения довольно маленьких, недолговечных объектов в куче, а также в производительности критического пути кода.

Поэтому они стали задаваться вопросом, можно ли разместить экземпляры QEvent из выделенного пула памяти, используя специальный аллокатор.

Oct. 10, 2019, 5:03 a.m.

Qt

Windows, Qt, OpenGL, Vulkan, macOS, Quick, Graphics, Embedded, Desktop

В третьей части серии статей о графике Qt рассмотрим, как обрабатываются шейдеры в Qt Quick в версии Qt 5.14 при переключении графа сцены на рендеринг через QRhi и Qt Rendering Hardware Interface (аппаратный интерфейс рендеринга Qt). Охватим обработку шейдеров, прежде чем углубляться в сам RHI, потому что приложения Qt Quick, использующие элементы ShaderEffect или нестандартные материалы (custom materials), должны сами предоставлять код фрагмента и/или вершинного шейдера, и поэтому они должны знать (а в Qt 6 перейти на) новый подход к обработке шейдеров.

Oct. 4, 2019, 5 a.m.

Qt

Vulkan, Quick, macOS, Qt, Embedded, Windows, Graphics, Desktop, OpenGL

Давайте продолжим с того места, где остановились в первой статье. Был рассмотерен пример приложения Qt Quick, работающего в Linux поверх OpenGL и Vulkan. Также видели захват кадра Vulkan в RenderDoc, который является не только неоценимым инструментом при разработке Qt, но также может быть полезен всем, кто хочет копать глубже и лучше понимать, как Qt Quick рендерит кадр (или устранять проблемы в рендеринге приложения). Теперь в этой статье сосредоточимся на том, что предлагает Qt 5.14 для macOS и Windows.

Oct. 2, 2019, 4:53 a.m.

Qt

Vulkan, Quick, Qt, Embedded, windows, Graphics, Desktop, MacOS, OpenGL

Теперь, когда приближается первая бета-версия Qt 5.14, пришло время поговорить об одной из самых важных новых функций. Сложно охватить все детали, касающиеся улучшений графического стека и пути к Qt 6 в одной статье, поэтому в частях 1 и 2 будет описан фон и более подробно рассмотрено, что будет поставляться с версией 5.14. Позже, в другой серии статей, рассмотрим технические детали и будущие направления.

Sept. 30, 2019, 6:43 a.m.

Qt

Google, Qt, iot, mqtt, telemetry

MQTT является важным стандартом для телеметрии, особенно в сценарии IoT.

Sept. 2, 2019, 5:04 a.m.

Qt

Graphics, OpenGL, qt, 3D, Quick

Разработчики изучали, как можно глубже интегрировать 3D и Qt Quick, в результате чего создали новый проект под названием Qt Quick 3D , который предоставляет собой высокоуровневый API для создания 3D-контента для пользовательских интерфейсов из Qt Quick. Вместо того, чтобы использовать внешний движок, который может привести к проблемам синхронизации анимации и нескольким уровням абстракции, Qt Company предоставляет расширения для Qt Quick Scenegraph для 3D-контента и средство визуализации для этих расширенных узлов графа сцены.

Значит ли это, что они написали еще одно 3D Solution для Qt? Не совсем так, потому что ядро пространственного рендеринга получено из рендерера Qt 3D Studio. Этот рендерер был портирован для использования Qt для абстракции платформы и подвергся рефакторингу для соответствия стилю кодирования проекта Qt.

Aug. 15, 2019, 4:22 a.m.

Algorithms

Дерево, Алгоритм, Tree

Алгоритм Дейкстры позволяет нам найти кратчайший путь между любыми двумя вершинами графа.

Он отличается от минимального остовного дерева тем, что кратчайшее расстояние между двумя вершинами может не включать все вершины графа.

Donate

Hello, Dear Users of EVILEG!!!

If the site helped you, then support the development of the site financially, please.

You can do it by following ways:

Thank you, Evgenii Legotckoi