Пятница, 29 Марта 2024, 00:38

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » свой графический движок
свой графический движок
afqДата: Четверг, 07 Марта 2019, 16:14 | Сообщение # 1
Разработчик
Сейчас нет на сайте
Делал я в общем hackingtoday игру и потом ее забросил. Щас что подумал раз я смог создать графические виджеты для игры, то я могу создать и для движка любой виджет, который захочу. Для меня проблема создавать свои виджеты с помощью gtk или qt. А так, как в aseprite, сделаю свои элементы. Только из-за того что я еще не делал этот движок думаю будут проблемы с экраном, то есть вставляя элемент его надо сразу ставить туда, куда надо, блин, а может и не будет проблем. Кто что думает о движках полностью на opengl?
drcrackДата: Четверг, 07 Марта 2019, 17:32 | Сообщение # 2
старожил
Сейчас нет на сайте
Цитата
Кто что думает о движках полностью на opengl?

я думаю что opengl мертв т.к. есть vulkan
afqДата: Четверг, 07 Марта 2019, 17:36 | Сообщение # 3
Разработчик
Сейчас нет на сайте
drcrack, блин, а я купил книгу по vulkan, но там написано что она пойдет опытным разработчикам opengl. А я еще не очень опытный разработчик opengl.
drcrackДата: Четверг, 07 Марта 2019, 17:40 | Сообщение # 4
старожил
Сейчас нет на сайте
ну для обучения он в принципе норм, т.к. на порядок проще чем dx12/vulkan (которые похожи и одинаково сложны)
но никаких ААА игр на opengl в ближайшие лет 20 уже не будет, поэтому имеет смысл максимально быстро его изучить и перейти к актуальным технологиям


Сообщение отредактировал drcrack - Четверг, 07 Марта 2019, 17:41
martukДата: Четверг, 07 Марта 2019, 18:27 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
По-моему использовать opengl еще есть смысл. Да, он уже чуть устарел на фоне новых "технологий", но как инструмент изживет он себя еще очень не скоро.
Куча игровых движков до сих пор используют OpenGL как основной api. Vulkan представили еще только в 2015, а openGL обкатан уже много раз => риски минимальны.
Последнюю спецификацию OpenGL выпустили совсем недавно, что говорит об актуальности.

Если ты собрался писать движок, то есть смысл внедрить сразу несколько графических API. И в зависимости от железа отрисовывать картинку через более подходящий (т.е. унифицировать команды от разных API), как это сделали разработчики Irrlicht или Gold Source.

Я вовсе не защищаю OpenGL и очень рад новым технологиям, просто хочу донести мысль о том, что на 2019 пока рано его стеснятся в своих проектах.
afqДата: Четверг, 07 Марта 2019, 23:08 | Сообщение # 6
Разработчик
Сейчас нет на сайте
Вспомнил как читал когда-то про мужика какого то, который пришет opengl интерфейсы. А ведь действительно, можно же не только движок, но и любую программу на opengl написать. Первое время написать программу на opengl будет долгим, пока создашь все нужные виджеты, но потом, когда будет создана куча виджетов, можно будет уже быстрее создавать программы. Можно же любой какой захочешь виджет создать, это же супер. Я вот например не могу для qt создать виджет, а если говорить для gtk, то там вообще для меня не понятно. Другое же дело opengl, если в qt и gtk я не могу создать файловый менеджер, то в opengl могу. Например в своем движке файлы спрайтов будут отрисовываться в файловом менеджере. Если 3d осилю, то и 3d объекты будут отображаться в файловом менеджере в одинаковом размере. 3D объекты я могу только obj формата использовать, но этого мне хватает с головой. Правда пока 3d все равно сложная тема для меня. Но если разберусь, то можно будет и игры 3d делать и 3d интерфейсы программ делать. Вот так вот.
GreyGLoomyДата: Четверг, 07 Марта 2019, 23:39 | Сообщение # 7
частый гость
Сейчас нет на сайте
Цитата afq ()
не могу для qt создать виджет

Примеры кастомных виджетов
Создание своего виджета
Вообще виджеты это уже древнее зло, сейчас моден QML.
Цитата afq ()
если в qt и gtk я не могу создать файловый менеджер

Кто\Что мешает написать свой виджет и написать парсинг директорий с атрибутами?
C++17 позволяет легко сделать второе.


Сообщение отредактировал GreyGLoomy - Четверг, 07 Марта 2019, 23:41
cherepetsДата: Пятница, 08 Марта 2019, 06:04 | Сообщение # 8
участник
Сейчас нет на сайте
Цитата drcrack ()
но никаких ААА игр на opengl в ближайшие лет 20 уже не будет, поэтому имеет смысл максимально быстро его изучить и перейти к актуальным технологиям

Посмотри на пример игры из первого поста. Это игра на 100% про UI, актуальные для ААА технологии там вряд ли пригодятся.
Скорее проще такое делать на каком-то UI фреймворке и выбор QT кажется довольно логичным. Если не зашло - попробовать WPF или (прости боже) Electron.
XakepДата: Пятница, 08 Марта 2019, 21:45 | Сообщение # 9
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата drcrack ()
я думаю что opengl мертв т.к. есть vulkan

это ерунда, OpenGL - это более высокоуровневое API, Vulkan же очень низкоуровневое API для большего контроля железа, что позволят писать наиболее оптимальный код, нужно для игр у которых графон запредельный. Да и Vulkan скорее OpenCL убъет, чем OpenGL, за счет того, что имеет прямой доступ к видеокарте и ее вычислительным ресурсам.

Цитата
А ведь действительно, можно же не только движок, но и любую программу на opengl написать.

Ну собственно blender так и делают, у них полностью рендеринг интерфейса на OpenGL'е.

Цитата
Первое время написать программу на opengl будет долгим, пока создашь все нужные виджеты, но потом, когда будет создана куча виджетов, можно будет уже быстрее создавать программы. Можно же любой какой захочешь виджет создать, это же супер. Я вот например не могу для qt создать виджет, а если говорить для gtk, то там вообще для меня не понятно. Другое же дело opengl, если в qt и gtk я не могу создать файловый менеджер, то в opengl могу

Это только кажется простым, на самом деле тут все намного сложнее, говорю как человек, который реализовывал рабочий UI на OpenGL, да и до сих пор пилю свой кроссплатформенный тулкит для работы с UI
На деле же, если хочется более менее сложный UI, нужно будет заморочиться над автоматическим расположением виждетов, над синхронизацией виджетов (размеры одних виджетов зависят от других), по хорошему нужно имет язык разметки, который в свою очередь создает дополнительные проблемы - нужно сделать удобную прослойку между кодом и языком разметки, нужен менеджер ресурсов (разные картинки, иконки, строки для разных локалей и не забываем про горячие клавишы, которые иногда хочется переназначить), нужно учитывать, что у людей разные мониторы и сейчас все чаще у людей HiDPI мониторы (с повышенной плотностью пикселей) на таких мониторах нужно автоматически подстраивать размеры, а если у тебя иконки растровые, то скорее всего нужно имет разные размеры этих иконок отмасштабированные под определенные мониторы (часто это просто 2 версии - x2 и для стандартных), кстати, рендеринг шрифтов это вообще отдельная тема и довольно не простая, в общем тема конечно интересная, но возможно не стоит заморачиваться так сильно и взять готовый UI тулкит.


Сообщение отредактировал Xakep - Пятница, 08 Марта 2019, 21:56
afqДата: Пятница, 08 Марта 2019, 22:56 | Сообщение # 10
Разработчик
Сейчас нет на сайте
Xakep, а как ты открывал opengl контекст? Я с помощью sdl2.
Цитата
рендеринг шрифтов это вообще отдельная тема

Я сначала создавал каждую букву высчитывал размер, а потом создавал текстуру с таким же размером и записывал в текстуру данные. Мне советуют каким то текстурным атласом пользоваться, но я так и не читал об этом, потому как мой способ уже проверен. Правда несколько дней назад была проблема если написать один символ '-', то там вычиталось неправильно и был segfault. Исправил. Но есть строка в коде, которая работает не логично.


Сообщение отредактировал afq - Пятница, 08 Марта 2019, 22:57
OrdanДата: Суббота, 09 Марта 2019, 02:16 | Сообщение # 11
Главный зомби
Сейчас нет на сайте
На openGL можно смело делать 2д игры различного качества. А текстурный атлас это когда на одном пнг куча разных спрайтов. Для openGl 100% надо их использовать по максимуму.

Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)

Мои проекты ТЫК
Мои видяхи на ютубэ ТЫК

Если ты споришь с идиотом, вероятно тоже самое делает и он.
XakepДата: Суббота, 09 Марта 2019, 09:31 | Сообщение # 12
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата
Xakep, а как ты открывал opengl контекст? Я с помощью sdl2.

у меня сейчас sfml стоит, но и sdl2 тоже использовал, sfml уже и так записывает все в текстурный атлас для конкретного шрифта и конретного размера текста, новые символы появляются в текстуре по мере использования, т.к. всю таблицу unicode в текстуру тоже не запихаешь, у sdl2 можно либо вручную сохранять, либо можно рендерить не по одной букве, а сразу текст, тогда этот текст будет срендерен в текстуру, не особо заглядывал во внутренности sdl2 так что не уверен как там сделан рендеринг самого тексту и создание подобной текстуры.
afqДата: Суббота, 09 Марта 2019, 15:25 | Сообщение # 13
Разработчик
Сейчас нет на сайте
Xakep,
Цитата
либо можно рендерить не по одной букве, а сразу текст, тогда этот текст будет срендерен в текстуру

В моей реализации с freetype2, можно писать такой текст вместе с \n, то есть если в sdl2 можно только одной строкой писать, то моим способом можно абзацами целыми писать.
Форум игроделов » Программирование » C/C++ » свой графический движок
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг