Войти
ПрограммированиеФорумОбщее

ZenGL Update (10 стр)

Страницы: 15 6 7 8 9 10
#135
(Правка: 3 мар 2022, 1:19) 21:52, 2 мар 2022

Skvoznjak
> Ну и при закрытии программы плюётся ошибками
Код пожалуйста в студию! Используемый компилятор и ОС?! И саму ошибку (что-то же пишется? Или опять просто где-то сорока принесла?).
Я хочу знать о данной проблеме больше, чем просто какое-то невнятное её описание.

Или ты писал про свои подмены?

#136
15:52, 3 мар 2022

Mirrel
>во внутренности эмиттеров. Основы ты не знаешь. Что и подтверждаешь своими высказываниями, причём практически всеми.

>Можешь кстати к Andru обратиться. Он делал эмиттеры, возможно он согласится всё переделать?

>Не трать пожалуйста моё время, на обсуждение пустого!

Я и так там сам всё делаю, вношу изменения и тестирую работоспособность. А теперь оказывается, что делаю это ничего не зная и не понимая, а работает оно потом каким-то чудом. Нужно было уточнить, что про "предлагайте" ты имеешь в виду не что-то ценное, а какие-то рюшечки, не влияющие на работоспособность и функционал приложений.

>Код пожалуйста в студию! Используемый компилятор и ОС?! И саму ошибку (что-то же пишется? Или опять просто где-то сорока принесла?).

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

An unhandled exception occurred at $000000000043C447 :
EAccessViolation : Access violation
  $000000000043C447

Heap dump by heaptrc unit
179111 memory blocks allocated : 2010788747/2012306080
179109 memory blocks freed     : 2010788683/2012306016
2 unfreed memory blocks : 64
True heap size : 393216
True free heap : 391936
Should be : 392896
Call trace for block $00007FCF2A313300 size 40
  $000000000043DA0C
  $000000000042B4DD
  $000000000042B4DD
Call trace for block $00007FCF2A3A3FC0 size 24
  $000000000048AD87
  $000000000042B4DD
  $000000000042B4DD
  $000000000042B4DD
An unhandled exception occurred at $000000000044D6BA :
EInOutError : Invalid file handle
  $000000000044D6BA

An unhandled exception occurred at $0000003252238F68 :
EAccessViolation : 
  $0000003252238F68

Ошибка сегментирования (core dumped)

Может когда-то займусь вопросом, когда время и силы будут.

#137
(Правка: 16:27) 16:22, 3 мар 2022

Skvoznjak
> а какие-то рюшечки, не влияющие на работоспособность и функционал приложений.
мда... одно то, что у тебя объект сдвигается в момент прорисовки, уже о многом говорит.
Меня не интересуют "рюшечки". Меня интересует код, при внесении дополнений в который, не вызовет дополнительных проблем.

Я тебе расскажу, что происходит, когда ты делаешь движение объекта в момент его прорисовки.

Берём поезд, герой на поезде (и поезд и ГГ движутся вправо) и летит какой-нибудь снаряд, справа-налево с внушительной скоростью. Отрисовка у тебя 60 кадров в секунду. На момент столкновения снаряда с ГГ кадр закончился и идёт ожидание следующего кадра. Но скорость снаряда+поезда+ГГ настолько велика оказывается, что снаряд вылетает уже с другой стороны героя на следующем кадре.

Снаряд пролетел мимо, хотя должен был произвести столкновение.

То же самое будет с мышкой. Щёлкнул, а объекта там нет, он на другом кадре уже полэкрана пролетел (даже объяснять не буду, догадайся сам).

Это получается, что к твоему коду пользователь должен будет ещё что-то лепить дополнительно своё?

И ты утверждаешь что это не костыль?

> А ошибка при выходе проявляется давно
Почему у тебя есть ошибки, а у других они не выскакивают?
Проверил, всё чисто.

#138
17:02, 3 мар 2022

Mirrel
>мда... одно то, что у тебя объект сдвигается в момент прорисовки, уже о многом говорит.

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

>Отрисовка у тебя 60 кадров в секунду.

И 500 бывает, я же не прибивал ограничение фпс гвоздями. Тем более, что есть мониторы с 75 фпс.

>На момент столкновения снаряда с ГГ кадр закончился и идёт ожидание следующего кадра. Но скорость снаряда+поезда+ГГ настолько велика оказывается, что снаряд вылетает уже с другой стороны героя на следующем кадре.

>Снаряд пролетел мимо, хотя должен был произвести столкновение.

Снаряд обычно не фифектами рисуется и даже, если бы рисовался только ими, то никакого промаха всё равно не было, потому что логика берёт данные из своих хранилищ, а то, что показывается на экране, это уже "другой слой реальности", не основной, но он может основной притормозить. Если же используются физические либы, то работу логики с ними нужно отдельно стыковать. "Рисовальник" и "думальник" вообще работают в разных потоках, потому количество фпс просто не должно быть больше 1000 - всё что меньше 1мс очень неудобно вычислять. Когда рисовальник вычислит, что снаряд достиг объекта, он пропишет ему правильные конечные координаты и отдаст их на отрисовку. Если снаряд должнен был перелететь, не беда - машина времени у нас под контролем! Не замечал, как в онлайн играх при лагах персонажа при движении иногда назад отбрасывает, или бегает вполне живой, суетится, а потом оказывается что уже несколько секунд как "прилёг отдохнуть"? Это так тамошняя "машина времени" стыкует слои игровой реальности. Если же всё действие происходит внутри одного бинаря, то даже броска назад не будет, просто на одном кадре снаряд ещё не долетит, а на следующем прилетит и не важно, миллисекунды прошли между кадрами или час.

>Почему у тебя есть ошибки, а у других они не выскакивают?
>Проверил, всё чисто.

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

#139
18:26, 3 мар 2022

Skvoznjak
> Если снаряд должнен был перелететь, не беда - машина времени у нас под
> контролем!
По сути ты признаёшь, что это костыль, но вот просто сказать "да, это костыль", тебе просто не хватает сил признаться.

Остальное это просто слова.

#140
18:46, 3 мар 2022

Mirrel
>По сути ты признаёшь, что это костыль, но вот просто сказать "да, это костыль", тебе просто не хватает сил признаться.

Тебе показалась чушь. Какой-то из потоков может притормозить на секунду и больше, но программа при этом должна более-менее безглючно работать. Твои "безкостыльные" решения выдадут хреновый результат, а программа подгоняющая игровую реальность под эталон, продолжит выдавать нормальный режим при широком диапазоне программных и аппаратных глюков, которые рано или поздно всё равно случатся.

#141
23:23, 3 мар 2022

Skvoznjak
> но программа при этом должна более-менее безглючно работать.
проблема в том, что именно "должна". ))) Главное в это верить!

> А ошибка при выходе проявляется давно, на куче компиляторов и наблюдаю её
> конечно в линуксах,
лучше проверь свой код на версии 3.12 и скажи, там была эта ошибка или нет?! Походу я знаю куда копать и эту часть можно исправить.

#142
17:20, 4 мар 2022

Mirrel
>проблема в том, что именно "должна". ))) Главное в это верить!

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

>лучше проверь свой код на версии 3.12 и скажи, там была эта ошибка или нет?! Походу я знаю куда копать и эту часть можно исправить.

Эта ошибка есть в новеллотыке, он как раз для тестирований сделан. Запускаешь в консоли, выключаешь и любуешься. Прикол в том, что зенгл по сути имеет собственный менеджер памяти и им никто серьёзно не занимался - работает совместно с другими менеджерами памяти и ладно. Причём сама необходимость ещё одного менеджера памяти в 2022 году под большим сомнением: в третьем фпц для хранения массивов есть няшный резиновый массивчик и если исключить из кода все впухуивания данных через переполнения диапазона и указатели, то при записи в один поток течь они не должны, штатные менеджеры памяти должны всё разрулить.

#143
20:35, 28 мар 2022

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

обновил ZenGL на той же версии. Добавлен новый функционал, для возможности работы с любым OpenGL. На видео показаны два варианта. С устаревшим OpenGL и при работе с версией 3.3.

#144
21:37, 8 мая 2022

Стабилизировал версию 3.29.
Основная часть коснулась Android и работы с виртуальной клавиатурой. 3-я демка.

#145
21:33, 22 июня 2022

Я вот туплю потихоньку...

В проекте, достаточно немало модулей. Если я из всех модулей "выдерну" константы и типы данных и запихну их в один модуль. Мне это боком не выйдет?

Как я смотрю, что я смогу конкретно знать где у меня эти данные лежат. Если я буду делать динамическую библиотеку, то мне достаточно будет сослаться как раз на этот модуль. Ну и довершить его указателями на процедуры/функции.

#146
21:46, 22 июня 2022

Skvoznjak
> И предложу.
> А движение партиклов ты не делал? Там же в procedure emitter2d_Draw одним
> циклом делается:
>
> q.Y := y1 + p.Size.Y;
> end;
>
> FOR Z3:=0 TO 3 DO BEGIN //вот этот цикл смещает партиклы на
> величину Emitter.SDVIG_X и Emitter.SDVIG_Y
> quad[Z3].X:=quad[Z3].X+Emitter.SDVIG_X;
> quad[Z3].Y:=quad[Z3].Y+Emitter.SDVIG_Y;
> END;
>
> fx2dAlpha^ := p.Alpha;
> glColor4ubv( @fx2dColor[ 0 ] );
>
> glTexCoord2fv( @tc[ 0 ] );
> glVertex2fv( @quad[ 0 ] );
> А то как-то интересно получается - поддержка новых фич опенгээла появилась, а
> фифекты всё также прибиты гвоздями к одному месту.
Как я и говорил. Ты даже кода нормально не просмотрел. Это не в emitter2d_Draw делается, а в emitter2d_Proc. Но вероятнее всего надо менять либо в регистрации эмиттеров (смотреть что внутри файлов записано), либо менять инициализацию, чтоб можно было играть эмиттерами.

Если есть желание, попробуй поиграться с загружаемыми данными эмиттеров. Возможно это даст нужный результат.
Так же можешь создать свой флаг (тип) эмиттера и обрабатывать в emitter2d_Proc своим способом.

#147
3:31, 23 июня 2022

Mirrel
> В проекте, достаточно немало модулей. Если я из всех модулей "выдерну"
> константы и типы данных и запихну их в один модуль. Мне это боком не выйдет?
а ты выполнил древний индейский ритуал?

#148
7:17, 23 июня 2022

skalogryz, в процессе. Я стараюсь понять их дзен.

Страницы: 15 6 7 8 9 10
ПрограммированиеФорумОбщее