|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 216
|
|
Точная регистрация нажатий клавиш при тормозах в программе16.09.2025, 13:54. Показов 1951. Ответов 31
Метки нет (Все метки)
Хотелось бы точно получать моменты нажатия клавиш, даже если программа тормозит (например, из-за тяжёлой отрисовки графики). События
keyPressEvent конечно становятся в очередь, но если сравнить у них метки времени timestamp - видно что их регистрация происходит только между кадрами программы (то есть с задержками).Вызовы QCoreApplication::processEvents() в нагруженных местах почти не улучшают точность регистрации, думаю из-за того что при отрисовке основные тормоза происходят на одном единственном вызове QOpenGLContext::swapBuffers.Мне даже не нужно сразу обрабатывать эти события, нужно только чтобы они становились в очередь с точными метками времени. А обработка уже после отрисовки текущего кадра. Можно как-то сделать регистрацию точной? Наверное через отдельный поток как-то?
0
|
|
| 16.09.2025, 13:54 | |
|
Ответы с готовыми решениями:
31
Отлавливание нажатий клавиш при неактивном(или свернутом) окне Что добавить в программу чтобы она показывала коды нажатых клавиш? Нажатие клавиш (движение объекта) |
|
110 / 74 / 6
Регистрация: 08.08.2025
Сообщений: 716
|
||
| 17.09.2025, 22:06 | ||
|
jcxz,
Это обсудили уже. Почитай выше, проблема не в этом, интересует другое
0
|
||
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 216
|
||||
| 17.09.2025, 22:52 [ТС] | ||||
|
Не по теме:
Добавлено через 9 минут ), но если фпс маловат, или просто в системе что-то лагнуло, затормозив отрисовку на секунду - обычно бывает противно когда видишь что на твои потуги комп вяло реагирует, со своими 16 ядрами. Хотя мог бы хоть нажатия кнопок нормально считать, это же быстро.
0
|
||||
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
||||
| 17.09.2025, 23:13 | ||||
Была неплохая задумка Qt3d, но сейчас развивают 2д, 3д на QML(там кстати на gpu) - это уже другая вселенная, тоже не особо подходит для создания игр.(снова же, имхо) Хочешь писать игры-выбери какой нить игровой движок.
0
|
||||
|
110 / 74 / 6
Регистрация: 08.08.2025
Сообщений: 716
|
|
| 17.09.2025, 23:25 | |
|
По идее, событие можно на прерывание посадить, но это надо писать драйвер.
А если проще, надо менять код, разбавлять вставками для клавы. Но про точность надо забыть, Вин не приспособлена для этого, это не реал-тайм ОС.
0
|
|
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 216
|
||||
| 17.09.2025, 23:37 [ТС] | ||||
![]() Винда не реал-тайм конечно, но и без этого можно качественно сделать.
0
|
||||
|
110 / 74 / 6
Регистрация: 08.08.2025
Сообщений: 716
|
|
| 17.09.2025, 23:51 | |
|
Geek Geekson,
Хз. Я вот прогу написал, а как ее запустить ? Она просто ничего не делает. Ну такая специфичная, там не надо запускать код, в нем нет смысла, он для другого. Мне сказали, поставь таймер и на него придумай событие. И все заработало идеально. А про чужой код никто ничего не скажет, думать надо самому.
0
|
|
|
Модератор
|
||
| 18.09.2025, 00:04 | ||
|
А qt это больше про гуи, хотя на нем написан почти весь коммерческий 3д софт
0
|
||
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 216
|
|
| 18.09.2025, 00:18 [ТС] | |
|
0
|
|
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
||
| 18.09.2025, 00:47 | ||
|
Про "текстовые виджеты" -там очень специфический случай - тяжеленная куча текста одной строкой без пробелов вроде бы, да? Как правило, в обычной ситуации, в 99% задач виджеты работают нормально.
0
|
||
|
Модератор
|
|
| 18.09.2025, 11:04 | |
|
Geek Geekson, Да и вообще, раз Вы написали что простая 2д игрушка, то спрашивается зачем такие заморочки с вводом? Зачем все так усложнять? Игры это не про усложнение, а наоборот про упрощение. Во всех играх ввода достаточно знать нажата ли кнопка на данный кадр (даже +- пара кадров ничего заметного не сделает, особенно на 60+ фпс). И еще как-то не вяжется тяжелая отрисовка графики и "простая двумерная игрулька".
0
|
|
|
3 / 3 / 0
Регистрация: 12.07.2022
Сообщений: 216
|
|
| 18.09.2025, 16:32 [ТС] | |
|
alecss131, ну это на случай если у юзера слабая машина со встроенной графикой. А насчёт "ничего заметного за пару кадров" - не сказал бы так. Если игра динамичная и надо часто на рефлексах нажимать кнопки (и играть не под пиво) - вполне заметно, если есть с чем сравнить. Это и отличает всякие говняные поделки от качественных игр. Но морочиться с потоками ща действительно неохота. Наверное будет в следующей версии
0
|
|
|
Покинул чат.
1133 / 728 / 195
Регистрация: 30.03.2021
Сообщений: 2,379
|
|
| 19.09.2025, 22:33 | |
|
Ради интереса, учитывая обсуждение выше - немного переделал свой пример - в цикле генерации пиксмапа(который работает в другом потоке) через определенные промежутки итерации кидаю сигнал в основной поток с gui, и по этому сигналу вызываю там processEvents() - в итоге вроде как лаги при перемещении итема на граф. сцене мышкой или клавой практически не ощущаются. Но я бы такое использовать наверное, не стал. Еще добавил задание приоритета для обоих потоков - разницы визуально нет при любых комбинациях - хз как это измерить. (Стоит добавить, что мой пример - не попытка решить сабж, а так, вариация на тему)
(зы и view->setCacheMode(QGraphicsView:: CacheBackground) случайно затесался после экспериментов- он там лишний.)
0
|
|
| 19.09.2025, 22:33 | |
|
Получить сочетание клавиш нажатых пользователем... Обработка одновременного нажатия клавиш клавиатуры Класс для рисования прямоугольника, который движется по нажатию клавиш Перемещение объекта нажатием клавиш Обработка нажатия двух клавиш одновременно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|