Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1
  • 2
  • 3
  • 4

ТЕМА: Игра Break out Game на Марсоходе 2 HDMI(720p) ,VGA

Игра Break out Game на Марсоходе 2 HDMI(720p) ,VGA 5 года 2 мес. назад #5412

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54

Chaosorg пишет: Какой размер знакоместа считаете минимально пригодной для "красивого" шрифта?

Подумал, что интереснее всего было-бы воткнуть в Марсоход беспроводную клавиатуру, а выход HDMI - в телевизор. Тогда разрешение нужно не меньше 1920х1080, и шрифт не меньше 16х16, 16х32, чтобы с дивана видно было, и управлять можно было.

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

Спасибо за пинок в нужном направлении, вроде как можно организовать в общей 2х-портовой памяти таблицы окон, текстов, и шрифтов. И только видеобуфер строки организовать в отдельной памяти. Тогда получится видеопроцессор - ядро со специальным набором команд, большинство из которых - NOP (коды обычных символов)...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Игра Break out Game на Марсоходе 2 HDMI(720p) ,VGA 5 года 2 мес. назад #5413

1920x1080 т.е. FullHD через HDMI ни один из имеющихся Марсоходов не может выдать, так как пиксельклок умноженный на кол-во бит последовательной передачи данных о цвете пикселя превосходит возможности используемых ПЛИС. 720p вроде как не случайно выбранный режим - это максимум возможностей Cyclone без дополнительной микросхемы TMDS конвертера или как там его.

Да, про видеопроцессор Вы правильно поняли, но теперь у меня вопрос - у Вас видеобуфер лишь для одной строки - если она пересекает элементы изображения (границы окон или векторы (Вы ведь про векторы тоже выше говорили)), которые начинаются и заканчиваются выше или ниже этой строки, т.е. являются следствием команды, выполненной во время рисования других строк, то Вам надо для каждой строки перестраивать всю сцену? Чудес ведь не бывает - если Вы не храните в видеобуфере весь кадр, то его надо перестраивать все время или элементы изображения могут быть только горизонтальными.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Игра Break out Game на Марсоходе 2 HDMI(720p) ,VGA 5 года 2 мес. назад #5415

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
От векторов пока отказался, только псевдографика (специальные символы).
Если видеопроцессор выдает, например, 16 горизонтальных пикселей одного символа за такт, то у него есть 16 тактов в среднем на обработку каждого символа в строке - есть время на обращение к таблицам окон, вычисление смещений специальными командами, смену базового адреса таблицы шрифта, и тд.

Ок, пусть будет 1280х720.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Игра Break out Game на Марсоходе 2 HDMI(720p) ,VGA 5 года 2 мес. назад #5416

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Графика - не самоцель, поэтому для начала сделаю попроще, но с плавающими окнами.

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Игра Break out Game на Марсоходе 2 HDMI(720p) ,VGA 5 года 2 мес. назад #5417

Leka пишет: Графика - не самоцель, поэтому для начала сделаю попроще, но с плавающими окнами.

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


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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Игра Break out Game на Марсоходе 2 HDMI(720p) ,VGA 5 года 2 мес. назад #5419

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54

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


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

В специальный режим проще всего переходить командой типа CALL на адрес строки, тогда код символа перевода строки должен совпадать с кодом RET. Адреса всех строк можно последовательно хранить в таблицах окон. Внешний строчный синхросигнал должен сбрасывать ядро и счетчик команд.

Так что надо взять "минималистичное ядро" с компилятором Си, и добавить туда одну команду. :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Игра Break out Game на Марсоходе 2 HDMI(720p) ,VGA 5 года 2 мес. назад #5420

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
Пусть надо ~~20 команд накладных расходов на вычисление одного плавающего окна. Тогда, если в окне всего 1 символ, получим ~~50 плавающих символов в строке, и ~~2000 на экране. Целая армия движущихся спрайтов получится.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Игра Break out Game на Марсоходе 2 HDMI(720p) ,VGA 5 года 2 мес. назад #5421

Leka пишет: Пусть надо ~~20 команд накладных расходов на вычисление одного плавающего окна. Тогда, если в окне всего 1 символ, получим ~~50 плавающих символов в строке, и ~~2000 на экране. Целая армия движущихся спрайтов получится.


Если эта армия в одном месте решит собраться (в ходе каких-то абстрагированных от ограничений Вашего адаптера движений - по сюжету, например :)), то как процессор за 20 команд примет решение о 2000 сущностей (как бы Вы их не называли)?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Игра Break out Game на Марсоходе 2 HDMI(720p) ,VGA 5 года 2 мес. назад #5423

  • Leka
  • Leka аватар
  • Не в сети
  • Живу я здесь
  • Живу я здесь
  • Сообщений: 635
  • Спасибо получено: 54
1) На заполнение видеобуфера пиксельной строки у видеопроцессора есть 1650 тактов (режим 1280х720), те ~1000 команд. 2) Число разных плавающих (с шагом в 1 пиксель) решеток не больше числа пикселей в знакоместе, это 256 для знакоместа 16х16. Если шаг вдвое больше, число решеток/окон вчетверо меньше, и тд. 3) Число разных сущностей ограничено. 4) "Физика" сущностей считается отдельно, и на основании этого готовится таблица окон, и заполняются сами окна.
Итог - если вся "армия" соберется в "одном месте", видеопроцессору больше считать не придется.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Leka.

Игра Break out Game на Марсоходе 2 HDMI(720p) ,VGA 5 года 2 мес. назад #5424

Leka пишет: 1) На заполнение видеобуфера пиксельной строки у видеопроцессора есть 1650 тактов (режим 1280х720), те ~1000 команд. 2) Число разных плавающих (с шагом в 1 пиксель) решеток не больше числа пикселей в знакоместе, это 256 для знакоместа 16х16. Если шаг вдвое больше, число решеток/окон вчетверо меньше, и тд. 3) Число разных сущностей ограничено. 4) "Физика" сущностей считается отдельно, и на основании этого готовится таблица окон, и заполняются сами окна.
Итог - если вся "армия" соберется в "одном месте", видеопроцессору больше считать не придется.

Значит у Вас есть какой-то еще процесор для удаления невидимых из-за перекрытия объектов или число допустимых объектов, пересекающихся с строкой, завышено. Может быть помните, как в играх для Денди спрайты начинали мерцать если выстраивались горизонтальный в ряд? Что произойдет если все окна будут иметь размер с весь экран? Сколько их таких можно иметь?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
  • 3
  • 4
Время создания страницы: 0.256 секунд
Работает на Kunena форум