|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|||||||||||
Похожая функция drawTriangles(flash) в html5?29.08.2023, 22:59. Показов 3331. Ответов 21
Метки нет (Все метки)
Мне нужно перевести код Flash в html5, не знаю какая альтернативная функция drawTriangles, есть в html5. Вот функция flash.
0-индекс ссылается на точку (0,0). 2 – ссылается на точку (0,height1) 1 – на точку (width1,0), таким образом из общей картинки отображается только часть, в нашем случае треугольник. Как перевести код flash на html5, альтернатива drawTriangles(flash)? Полностью код на flash.
0
|
|||||||||||
| 29.08.2023, 22:59 | |
|
Ответы с готовыми решениями:
21
Функция похожая на memcmp Функция похожая на ShowModal window похожая функция |
|
|
||||||
| 12.09.2023, 16:03 | ||||||
|
Такое если...
0
|
||||||
| 24.06.2024, 22:00 | |||||||||||||||||||||||||||||||||||||||||
|
У элемента <canvas> кроме контекста "2d" есть контекст "webgl". Таким образом это контекст можно получить:
Исходники
index.html
0
|
|||||||||||||||||||||||||||||||||||||||||
| 24.06.2024, 22:08 | |||||||||||||||||||||||||||||||
|
Пример рисования повёрнутого прямоугольника на WebGL: https://plnkr.co/edit/rOIrHBskyz3JTw2s?preview
Исходники
index.html
0
|
|||||||||||||||||||||||||||||||
| 25.06.2024, 01:37 | |
|
Если заинтересует WebGL, то в этой теме есть туториал.
0
|
|
| 25.06.2024, 12:54 | |||||||||||||||||||||||||||||||||||||||||||||||||||
|
Несколько слов о том, как работают шейдеры. Их два: вершинный и фрагментный (или пиксельный). Вершинный отвечает за расстановку вершин треугольников, а пиксельный за покраску пикселей:
Вершинный шейдер:
1) Матрица проекции. Она задаёт размеры мира по трём осям: X, Y, Z. Задаёт диапазонами. Сначала идёт диапазон по X, потом по Y, а потом по Z. В следующим коде размер мира по X от 0 до 100, размер мира по Y от 0 до 100, а размер мира по Z от 1 до -1. Ось Z смотрит на наблюдателя:
В шейдер отправляется итоговая MVP (Model-view-projection) матрица следующей командой:
Следующем образом происходит определение вершин для квадрата и отправка его в память видео карты. Это делается один раз во время инициализации программы:
Вершины квадрата и MVP-матрица переданы. Для запуска процесса рисования с помощью шейдеров вызывается метод:
Вершинный шейдер будет вызван 4 раза. Каждый раз он будет брать из массива вершин одну вершину и умножать MVP-матрицу на эту вершину. Таким образом он расставит вершины. Далее, перед вызовом фрагментного шейдера каждый треугольник (а их 2 в прямоугольнике) будет разбит на фрагменты (грубо говоря пиксели) и будет создан внутри видеокарты массив фрагментов. Фрагментный шейдер будет вызван последовательно для каждого фрагмента и каждому фрагменту будет присвоен заданный цвет. На самом деле программа фрагментного шейдера будет запущена на множестве потоков одновременно, то есть покраска фрагментов будет происходит параллельно для множетства фрагментов.
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||
| 25.06.2024, 14:09 | |||||||||||||||||||||||||||||||||||||||||
|
У WebGL есть преимущество перед Phaser и Pixi.js в том, что WebGL относительно нетрудно переписать на С++ и OpenGL (для окна можно взять: Qt, SDL, GLFW и т.д.), чтобы создать EXE. Либо переписать на Python (для окна можно взять: PyQt, PySide, PySDL и т.д.)
Например, трансформированный прямоугольник на C++ и Python: Использование QOpenGLWidget для окна
PyQt6
main.py
PySide6
main.py
Qt6 C++
main.cpp
Использование QOpenGLWindow для окна
PyQt6
main.py
PySide6
main.py
Qt6 C++
main.cpp
0
|
|||||||||||||||||||||||||||||||||||||||||
| 25.06.2024, 14:21 | ||
|
0
|
||
| 26.06.2024, 01:58 | ||||||
|
Шейдерная программа
shader-program.js
Шейдерная программа - это объект через который происходит общение с вершинным и фрагментным шейдерами, то есть пересылка данных, например, передача MVP-матрицы. В файле shader-program.js происходит передача исходников шейдеров на видеокарту. Отдаётся команда на компиляцию и линковку шейдеров. В конечном итоге возвращается объект шейдерной программы.
0
|
||||||
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
|||||||||||
| 09.11.2024, 10:57 [ТС] | |||||||||||
Сообщение было отмечено 8Observer8 как решение
Решение
8Observer8, решила ещё раз поискать функцию drawTriangle(flash), только на html5. На этот раз поиски увенчались успехом. Мне удалось найти не только эту функцию на и целую библиотеку. Называется она IvankLib. Там есть почти все функции Flash, только нет startDrag и stopDrag, но это не особо важно можно захват объекта сделать другими способами.
Например. https://lib.ivank.net/?p=demos&d=mevents Для сравнения два примера. На flash.
Вот архив с работающим примером где изображение можно растягивать передвигая точки. drawTrinagle.zip
1
|
|||||||||||
|
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
|
||||||
| 12.11.2024, 08:49 [ТС] | ||||||
|
8Observer8, вот пример без использовании библиотек, правда не похож вариант на flash, пыталась перенести координаты вершин с flash. Здесь получилось по другому и вершины на flash не работают.
drawTriangleArcher.zip Хватаем маркеры мышкой и перетаскиваем картинка расширяется. Самая правильная библиотека которая копирует точную функции из flash, это "ivank". Про который я указала выше. Я протестировала более сложный пример где тоже используется drawTriangle и всё сработало. Удалось переделать код за пару часов . Так что для переноса своих сложных проектов с flash на html5 подойдёт.
1
|
||||||
| 29.05.2025, 15:01 | |||||||||||
|
Стало любопытно посмотреть, что за функция drawTriangles. Решила попробовать сделать тоже самое на Pixi. Работаю сейчас с этой библиотекой. Простой пример.
Main1.html
Изменила данные и добавила из предыдущих постов (Примеры выше).
Полностью исходный код прикреплён. drawTrianglesPixi.zip Небольшая справка: PIXI - это библиотека javascript для работы с 2d-графикой. Не смотря, что основой является 2D, PIXI использует технологию WebGL. Так что для построения triangles у нас была также задействована технология WebGL.
0
|
|||||||||||
| 29.05.2025, 17:15 | |||||||
|
У вас в архиве версия Pixi.js v5.1.3 от 2019-ого года:
0
|
|||||||
| 29.05.2025, 17:19 | |||
|
8Observer8,
Хочу посмотреть как один и тот же код будет работать под разные API.
0
|
|||
| 29.05.2025, 20:58 | ||||||||
Добавлено через 8 минут По поводу поддержки Canvas API нашёл следующую информацию, когда вышла и обновлялась v5: autoDetectRenderer no longer in v5? Перевод Google Translate ответа одного из разработчиков Pixi.js:
0
|
||||||||
| 30.05.2025, 12:30 | |||||||||||
|
Пример выше https://jsfiddle.net/bigtimebuddy/t1u9678x/ перенёс в более лучшую песочницу: https://plnkr.co/edit/ef1KmVMMd9nDfwKd, где можно сделать намного более наглядное и естественное подключение внешних файлов:
index.html
1
|
|||||||||||
| 11.06.2025, 16:08 | |||||||||||||||||||||
|
Скачала версию pixi 4.5.6. Там есть поддержка Canvas. Версия выбрана специально для тестирования Canvas, чтобы проверить как drawTriangles будет работать. Всего сделала четыре примера. По сути они похожи, только координаты точек изменены.
Первый пример Webgl для создания приложения используется функция.
При тестировании обе функции отработали нормально. Вот исходники. Pixi1.zip Теперь flash, там можно изменить координаты так, что лини будут пересекаться, а расположение точек окажутся в случайных местах, что может нарушить отрисовку. Но на flash это никак не повлияет. Проверено, всё работает нормально. Сделаем тоже самое на Pixi, используем WebGL и Canvas. Пример 3 и 4. Вот код Example3 на Webgl.
Перейдём к Canvas и сделаем тоже самое Example 4. Вот код.
Исходники Example 3 и Example4. Pixi2.zip Интересно, что WebGL Pixi 4.5.6 работает только в старых браузерах, а в новых та же ситуация что и с Canvas пропадают текстуры. Например два примера Example3 и Example4 я тестировала в Opera 79 и всё работала. Когда запустила через Google Chrome текстуры пропали, что на WebGL, что на Canvas. Предположительно какие-то функции WebGL отменили с новыми версиями и поддерживаются только на старых браузерах, но если взять другую библиотеку где есть работа с WebGL и можно нарисовать drawTrinagles то там всё работает. Пока не знаю в чём отличия работы в новых и старых браузерах. Библиотеку pixi пока ещё не разбирала. Итог: WebGL это технология в браузере которая использует всю мощь видеокарты для рисования очень крутой 3d-графики. Если например чтобы сделать простую двухмерную игру достаточно использовать Canvas API, то для более сложных проектов нужен WebGL. Почему часть текстур на Canvas пропадает? Как уже упоминалась Canvas API используется только для рисование простых игр и объектов. Собрав не много информации в интернете про drawTrinangles удалось выяснить, что это первый способ реализовать 3d на движке 2d. Например, чтобы сделать поворот объекта в 3d, нужно поменять UV-координаты и позиции треугольника. Об этом даже есть статья в интернете как сделать 3d используя drawTrinangles. Из этого сделала вывод текстуры попадают в Canvas API потому, что холст не предназначен для 2-х мерной графики и поэтому при сложных координатах drawTriangles работает некорректно. Вывод: если в проекте используются функции отдалённо напоминающий рендеринг 3d то лучше использовать WebGL. Это технология и быстрее и надёжнее. Можно делать крутые 3d игры.
0
|
|||||||||||||||||||||
| 11.06.2025, 17:20 | ||||
|
0
|
||||
| 29.06.2025, 15:20 | ||
|
Можете в ChatGPT написать в чём разница между WebGL 1.0 и WebGL 2.0 и он вам подробнее напишет. Я считаю, что вполне хватит для большинства задач WebGL 1.0. Эта версия будет запускаться не только на очень старых Desktop браузерах, но и на очень старых мобильных браузерах на Android. В WebGL нет ничего сложного. В дальнейшем это даже проще, чем работать с Pixi.js Готовый фреймворк только в начале даёт преимущество, а дальше он только мешает, а на чистом WebGL лучше понимание, что как работает и больше простора для допиливания напильником. Pixi.js - это только 2D, а чистый WebGL - это кроме 2D ещё и 3D, к которому легко прийти из 2D. Если вам нужен 3D с PBR, то конечно, проще взять Three.js, но чистый WebGL даст понимание, как работает Three.js, потому что Three.js написана с помощью чистого WebGL. Если вы хотите использовать Pixi.js, то вам будет всё равно очень полезно иногда изучать чистый WebGL, чтобы понимать как работает Pixi.js, как работает линейная алгебра на glMatrix, как работают основы компьютерной графики на шейдерах. Когда вы узнаете основы WebGL на практике, то вам будет проще писать свои шейдеры для Pixi.js Я постарался подробно объяснить, как работает рисование треугольника на шейдерном OpenGL и Qt C++. На WebGL и JavaScript будет тот же самый принцип работы. Преимущество WebGL в том, что программы которые использую OpenGL и WebGL выглядят на всех языках очень похоже. Например, вы можете веб-версию своего приложения делать на WebGL и JavaScript, а EXE делать на Delphi, который вы тоже изучали или изучаете. Вам будет легко одновременно дописывать программы на JavaScript и Delphi, потому что они будут выглядить один в один на OpenGL и WebGL. Посмотрите, пожалуйста, до конца моё видео. Я постарался объяснить своими словами максимально доступно. Я использовал функции обёртки Qt над OpenGL, но главное, это суть работы шейдеров и матриц. На WebGL будет очень похоже. Позже я запишу, как с нуля написать трансформированный треугольник на WebGL и JavaScript. На русском: На английском:
0
|
||
| 29.06.2025, 15:20 | |
|
Помогаю со студенческими работами здесь
20
Функция, очень похожая на switch Функция похожая на splice из JavaScript
Есть функция в С++ похожая на: DEL(St, Poz, N)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|