Форум программистов, компьютерный форум, киберфорум
8Observer8
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Рисование домика в 2D с GUI на WebGL 1.0 (JavaScript, TypeScript) и OpenGL 2.1 (Python, C++, Qt, PyQt, PySide)

Запись от 8Observer8 размещена 05.02.2023 в 16:34
Показов 2786 Комментарии 1

Содержание блога

Рисование домика в 2D с GUI на:
  • JavaScript, WebGL 1.0
  • TypeScript, WebGL 1.0
  • Python, PyQt6, OpenGL 2.1
  • Python, PySide6, OpenGL 2.1
  • C++, Qt6, OpenGL 2.1
и размышления по поводу инструментов программировани­­­­я рисования графики

Исходники на GitHub:

Инструкции по запуску примеров:

JavaScript

Установить Node.js (https://nodejs.org/en/download/). В Node.js есть пакетный менеджер NPM. Надо установить глобально три пакета командой в консоли:

npm i -g rollup uglify-js http-server
Открыть консоль в корневой директории проекта. Я использую Notepad++, в качестве редактор кода, и из этого редактора можно открыть консоль. Надо запустить проект в debug-режиме командой:

npm run dev
Теперь rollup будет следить за файлами и при изменении и сохранении файла будет собирать новый bundle.js. Надо открыть вторую консоль и ввести команду запуска локального сервера:

http-server -c-1
Ключ "-c-1" означает, что браузер не будет кэшировать файлы. Теперь можно открыть вкладку браузера и ввести:

localhost:8080/index.html
Можно открыть консоль браузера, например, в Chrome - Ctrl+Shift+J. Для сборки в релиз надо остановить режим отладки, нажав Ctrl+C и ввести команду:

npm run release
Будет создан сжатый bundle.js, который загружается быстрее.


TypeScript

Установить Node.js (https://nodejs.org/en/download/). В Node.js есть пакетный менеджер NPM. Надо установить глобально три пакета командой в консоли:

npm i -g rollup rollup-plugin-typescript2 uglify-js http-server typescript
Открыть консоль в корневой директории проекта. Я использую Notepad++, в качестве редактор кода, и из этого редактора можно открыть консоль. Сделать привязку к rollup-plugin-typescript2 командой в консоли:

npm link rollup-plugin-typescript2
Запустить проект в debug-режиме командой:

npm run dev
Теперь rollup будет следить за файлами и при изменении и сохранении файла будет собирать новый bundle.js. Надо открыть вторую консоль и ввести команду запуска локального сервера:

http-server -c-1
Ключ "-c-1" означает, что браузер не будет кэшировать файлы. Теперь можно открыть вкладку браузера и ввести:

localhost:8080/index.html
Можно открыть консоль браузера, например, в Chrome - Ctrl+Shift+J. Для сборки в релиз надо остановить режим отладки, нажав Ctrl+C и ввести команду:

npm run release
Будет создан сжатый bundle.js, который загружается быстрее.


PyQt6

Скачать интерпретатор Python: https://www.python.org/downloads/ Желательно версию 3.8 потому что с ней работает библиотека для 2D-физики Box2D (https://pypi.org/project/Box2D/)

Установить пакеты командой из консоли:
pip install numpy PyOpenGL PyQt6
Запустить пример командой из консоли из директории примера:

python main.py
В качестве редактора кода можно использовать Nodepad++ (мой выбор), либо VSCode, либо бесплатную версию PyCharm и т.д.


PySide6

Скачать интерпретатор Python: https://www.python.org/downloads/ Желательно версию 3.8 потому что с ней работает библиотека для 2D-физики Box2D (https://pypi.org/project/Box2D/)

Установить пакеты командой из консоли:
pip install numpy PyOpenGL PySide6
Запустить пример командой из консоли из директории примера:

python main.py
В качестве редактора кода можно использовать Nodepad++ (мой выбор), либо VSCode, либо бесплатную версию PyCharm и т.д.


Qt C++ для Window 10 64-bit

Скачать и распаковать архив с установленным Qt 6.2.0, MinGW 8.1.0 64-bit: https://disk.yandex.ru/d/FiDDO5IuAQ4phQ (942 MB - архив, 2.29 GB - в распакованном виде). Здесь статическая сборка, если нужно: https://disk.yandex.ru/d/nIORLx_JIUnfnw (194 MB - архив, 822 MB - в распакованном виде)

Добавить пути в переменную окружения Path:
  • C:\Qt6\6.2.0\mingw81_64\bin
  • C:\Qt6\Tools\mingw810_64\bin
  • C:\Qt6\Tools\CMake_64\bin

Быстрый вызов окна переменных среды командой в консоли: rundll32 sysdm.cpl,EditEnvironmentVariables

Для сборки и запуска проекта ввести следующие команды в консоли из корня проекта:

qmake -makefile
mingw32-make
"release/app"


Миниатюры
Нажмите на изображение для увеличения
Название: house-2d-opengl21-pyside6-python.gif
Просмотров: 1596
Размер:	69.4 Кб
ID:	7926  
Вложения
Тип файла: zip house-2d-opengl21-qt6-cpp-win10-64bit-exe.zip (7.48 Мб, 588 просмотров)
Тип файла: zip house-2d-webgl-js.zip (5.7 Кб, 379 просмотров)
Тип файла: zip house-2d-webgl-ts.zip (6.1 Кб, 455 просмотров)
Тип файла: zip house-2d-opengl21-pyqt6-python.zip (4.2 Кб, 421 просмотров)
Тип файла: zip house-2d-opengl21-pyside6-python.zip (4.3 Кб, 418 просмотров)
Тип файла: zip house-2d-opengl21-qt6-cpp.zip (5.8 Кб, 466 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 1
Комментарии
  1. Старый комментарий
    Добавил инструкции по запуску примеров.
    Запись от 8Observer8 размещена 11.02.2023 в 02:12 8Observer8 вне форума
 
Новые блоги и статьи
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru