>> |
No.27807
Файл: 80e783b98258868b37f185ff4b97caaa.jpg -(314 KB, 1075x1518, 80e783b98258868b37f185ff4b97caaa.jpg)
>>27741
ENABLE_VIRTUAL_TERMINAL_PROCESSING действительно медленная, но не до невозможности, я делал то же самое и у меня в итоге вышел почти приемлемый для полноэкранной анимации FPS. В моём случае узким местом было формирование строки, то есть, буквально, формирование и копирование RGB-циферок стандартными функциями. Проверь, не так ли это в твоём случае, то есть сколько раз в секунду ты можешь хотя бы сформировать строку без её вывода. Если проблема действительно в этом, то предвыдели буфер по максимуму, то есть столько, сколько понадобится в худшем случае — для смены обоих цветов в каждой ячейке экрана, и заполняй его руками без аллокаций, то есть заноси буквы через buf[pos++] = '[' и цифры компонентов RGB-цветов через buf[pos++] = c / 10 % 10.
И да, содержимое всего экрана ты должен вывести в один вызов. Это не только быстрее, но и выполняется без мерцания, разрывов, и подобных артефактов, в отличие от вывода построчно или попиксельно.
И да, вывод всего прямоугольника через WriteConsoleOutput намного быстрее, если тебя устраивают 16 цветов. А то судя по скриншоту, устраивают, а я растеоретизировался. :D
|