Войти
Вело-изобретателиФорумSR2D - софтовый 2D движок

SR2D, тестируем x64 версию. (9 стр)

Страницы: 16 7 8 9 10 11 Следующая »
#120
21:05, 22 фев 2022

SilentPrayerCG
> 11 64 бита
Я на семёрке проверял, проблем нет. Не знаю, может в 11 уже что-то поменяли в этом плане.

#121
(Правка: 21:17) 21:13, 22 фев 2022

Mikle
чекнул на 10тке 64 твой ехе, и он работает
я чтот такого вообще не ожидал
удачи мне понять, теперь, что поменялось

ps
а этот код как-то привязан к мониторам? у меня их два

pps
Mikle я чекнул, отцепил 1 монитор и все заработало
может надо как-то указать монитор конкретный?

#122
20:50, 23 фев 2022

SilentPrayerCG
Если всё срастётся - на выходных поставлю студию с NET, проверю.

#123
(Правка: 22:36) 22:33, 23 фев 2022

Mikle
чекни ага
но у меня на моем компе вб 6 пример точно заработал, когда я 2ой монитор отключил
я завтра еще чекну вечером, может и .net версию тоже

а то я что-то в тот раз отключил, проверил и сразу на место подключил) не комфортно без 2ого моника уже

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

#124
(Правка: 20:35) 20:25, 25 фев 2022

Mikle
хоть настроения и нет, по очевидным причинам
я чекнул еще раз на .net код
адаптер = hdc.handle
отключил монитор второй

все тоже самое, тот-же код выдает функция, о котором я писал в прошлый раз

твой exe сделанный в вб 6 с одним монитором работал

#125
19:44, 26 фев 2022

SilentPrayerCG
Вот пример: NET
Просто импортнул VB6 проект в vb.NET, исправил работу с hdc - у меня работает.

#126
(Правка: 20:41) 20:40, 26 фев 2022

Mikle
ну ясно, функции тоже должны быть интеджер, а ошибка была потому что опять-же этот код не работает если в системе 2 монитора
проверил твой ехе, на 1 мониторе работает, больше 1ого - ошибка

как-то можно эту проблему обойти?
я пробовал гуглить название функции и 2 монитора, ничего не находит

#127
20:44, 26 фев 2022

На счёт двух мониторов сложнее, это мне сначала нужно поставить второй монитор.
Имеет смысл спросить the trick.

#128
(Правка: 21:13) 20:49, 26 фев 2022

Mikle
По какой-то причине мой код который я изначально сделал, даже после фикса на интеджер и отключения мониторов
выдает унейл то в-синк
хотя я сравнил все критические строки с твоим (который я кстати не могу так просто запустить, видимо разница в студиях, он мне даже форму не показывает, говорит не могу дизайнер формы открыть, потому что гладиолус) придется все опять перекатать чтобы проверить
но дергать туда сюда монитор вообще не весело

создал чистый проект, скопировал весь код, добавил таймер, тоже анейбл то в-синк

ps
понятно
в общем, если создать проект под Net Framework (даже самый последний 4.8) то с 1 монитором работает, с двумя ошибка про адаптер

а я свой тестовый проект начал делать под .NET 6
и вот под ним уже не может в-синкнуть, с одним монитором.
честно я не ожидал, я думал это просто логическое продолжение нет фреймворка, и ср2д написанное под него, работает без видимых проблем под .нет 6

(ну и естественно ничего не гуглится по названию функции и проблеме)
c net 6 функция всинка выдает -1073741811, я попробовал в хекс перевести, и я не могу найти такой NTSTATUS
причем на нет 6 и на нет фреймворк 4.8, с в двумя мониторами функция которая проверяет адаптер тоже выдает такой-же код
так что вполне возможно что на нет 6 просто нужно обязательно как-то монитор обозначить, а не фреймворке не обязательно если он 1.

#129
19:08, 5 мар 2022

Mikle
попробовал я в личку ему написал, не ответил
наверное не до этого, может из-за всего что происходит

спросил еще товарища программиста, но он сказал что не знает ничего про директ3д и его дурацкие функции с длинными названиями

#130
(Правка: 14:13) 14:12, 8 мар 2022

Mikle
Ок фиг с ней с вертикалкой.
А есть какой-то нормальный способ ограничить число кадров?
У меня была такая мысль, что чтобы все действие не было завязано на частоте кадров, как в старых играх (а я так понимаю пример с вертикалкой, в том виде в котором он есть, как раз к этому и приведет)
нужно все действия делать в do loop, а конечный painttodevice делать в отдельном таймере
ну я попытался так сделать, сделал интервал таймеру 1000/60=16,6666666667 (т.е просто 16 по итогу)
но счетчик почему-то показывает 40
так-же все те движения квадратиков которые я делал, стали супербыстрыми (и как в таких случаях подобное решают, инкремент уменьшают, ну типа движение не +0.0001 а +0.00000001, или трид слип делать, если речь идет о чем-то простом)
в общем я не уверен, как это правильно делают
возможно painttodevice нужно выводить в отдельный поток вообще, чтобы основной поток не прерывался на отрисовку
хотя я пока не уверен как тогда посчитать фпс, потому что опять-же один поток должен будет складывать счетчик а второй затирать

#131
(Правка: 15:22) 15:21, 8 мар 2022

Не нужно лишних потоков, лучше всего синхронизироваться по QueryPerformanceCounter, просто ожиданием в конце цикла.
Таймер на таких коротких замерах не очень точен, но для простых применений пойдёт, самая неприятная вещь у таймера, что при непредвиденных задержках события таймера могут накапливаться в очереди, вызывая ещё более сильные тормоза, это нужно отслеживать.
Ещё вариант - вообще не ограничивать частоту рендера, а положение объектов высчитывать из фактического времени на момент рендера.

#132
15:59, 8 мар 2022

Какие-то примеры есть?

и по поводу второго вариант, я что-то вообще не понял) я так понимаю это уже для каких-то более сложных вещей?

#133
18:58, 8 мар 2022

https://disk.yandex.ru/d/nbXvoI1VZkEz_w
SilentPrayerCG
Вот я в пример DPBM x64 вариант добавил движущийся шарик, скорость которого не привязана к FPS.
Если замер времени сделать не на Now(), а на QueryPerformanceCounter(), то будет ещё ровнее.

#134
19:23, 8 мар 2022

SilentPrayerCG
> У меня была такая мысль, что чтобы все действие не было завязано на частоте
> кадров, как в старых играх
А всё равно придётся думать: чем пожертвовать.

Если привязываешь физику\анимацию к частоте кадров:
(+) быстродействие.
(+) стабильность поведения физики.
(-) гибкое регулирование частоты кадров в игре.

Если делаешь динамически изменяемый шаг физики\анимации:
(+) быстродействие.
(-) стабильность поведения физики.
(+) гибкое регулирование частоты кадров в игре.

Если делаешь фиксированный шаг физики\анимации но за кадр шагов физики несколько:
(-) быстродействие.
(+) стабильность поведения физики.
(+) гибкое регулирование частоты кадров в игре.

Лично я считаю, что 30 фпс хватит всем.
Поэтому привязка к частоте кадров выглядит самым верным решением.
Но если ты хочешь чтобы было плавно на разном фепесе, тогда реально надо думать о других вариантах.

Страницы: 16 7 8 9 10 11 Следующая »
Вело-изобретателиФорумSR2D - софтовый 2D движок