|
GP2X Community Новостной форум посвященный консолям GP2X
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
ainu
Местный
Возраст: 37 Зарегистрирован: 13.11.2010 Сообщения: 133
Группы: Нет
|
|
Ищу библиотеку/код для трансфомации поверхностей на SDL, например, аналогичную как в bennyGD.
Существует такая штука, как SDL_gfx, она же SDL_rotozoom, для масштабирования и вращения. Также в интернете есть куча самописных функций для этого же. А мне нужна для трансформации, сделать из прямоугольника трапецию, например, или параллелограмм (построчным смещением). Это нужно для псевдо 3D (стены и пол в doom, земля в tekken advance под GBA, вся 3D графика в GBA). Взять тотже battletoads & double dragon на NES, там во втором уровне герой ходит по полу, и линии на полу идут в перспективе. Если будет функция смещения построчного (параллелограмм), на её основе можно сделать и странформацию на основе афинных преобразований.
Почему то уже долго ищу, и никак не могу найти даже ничего близко лежащего. Ведь както же реализованы стены и под в DOOM и GBA эмуляторах, и транформация в bennyGD? Нежелательно делать просто перебором точек в цикле, нужно чтото основанное на memset и memcopy (желательно). Ибо поточечтно генерировать текстуры чтобы положить на пол, допустим, 20 трапеций, это очень долго, а надо выдерживать хотябы 30-40 FPS. |
|
Вернуться к началу |
|
|
Hahahoj
Site Admin
Пол: Возраст: 51 Зарегистрирован: 08.10.2008 Сообщения: 1848
Группы:
|
|
Ты разберись что хочешь. Поверхность - это ближе к 3д движку (соответственно не SDL, а что-то своё, работающее с фреймбуфером напрямую, но скорее всего, увы, memset и memcopy не прокатят (за редким исключением трансформации строчек, где можно придумать алгоритм уменьшения линии на основе последовательности вызовов мемкопи с изменяющимся по необходимости шагом и табличкой размеров таких шагов привязанных к нужному масштабу).
Если про трансформирование же именно объектов как плоскостей, то надо, имхо, поближе присматриваться к OPEN GL.
Описание софтовой реализации такого масштабирования с точки зрения максимальной оптимизации кода есть в книге Ламота "Секреты программирования игр" довиндозной поры, там на основе этого построена и описана гамма близкая по графике к Вольфенштейну.
Можно также поковырять исходники Квазиста (Флешчасмер 1, эх, и потерянные исходники нулевого Часмера, если он сам не соблаговолит откомментить, но думаю он всё равно пошлет именно туда и это будет его единственный комментарий). _________________ Просто Вовк |
|
Вернуться к началу |
|
|
ainu
Местный
Возраст: 37 Зарегистрирован: 13.11.2010 Сообщения: 133
Группы: Нет
|
|
Поверхность - вольный перевод слова Surface, это основная структура в SDL, там хранятся изображения, в этойже структуре объявлен экран.
Например, фунция SDL_Rotozoom при вызове возвращает Surface, она же поверхность. ТО, что я видел в интернете, оперируют с набором даных, я ищу то, чему можно скормить переменную типа Surface (загруженную SDL и которую можно вывести на экран), и которая вернёт изменнённую Surface. SDL не умеет выводить на экран посто массив данных и получать массив данных просто из фала с картинкой. Верннее можно но низкоуровневыми штуками (смещение указателя в обасть памяти). |
|
Вернуться к началу |
|
|
Hahahoj
Site Admin
Пол: Возраст: 51 Зарегистрирован: 08.10.2008 Сообщения: 1848
Группы:
|
|
А я тебе про что? _________________ Просто Вовк |
|
Вернуться к началу |
|
|
ainu
Местный
Возраст: 37 Зарегистрирован: 13.11.2010 Сообщения: 133
Группы: Нет
|
|
Туплю, про то же.
Просто действительно странно-вращение готовое на SDL есть, для этого три минимум библиотеки видел, а сдвига построчного нет, хотя последний и быстрее работает, и в играх может использоваться.
Про memcopy я понял, сам попробую написатьчерез getpixel-putpixel.
Вот заставить на кену работаь opengl чтолибо я не смог, кроме странного синтаксиса код, использующий DGE. |
|
Вернуться к началу |
|
|
quasist
Профи
Пол: Возраст: 38 Зарегистрирован: 28.10.2008 Сообщения: 43
Группы:
|
|
Я думаю, лучше было бы отрисовать вручную, а на поверхность SDL загонять в последнюю очередь. Мало ли как себя будет SDL вести через лет 10... _________________
|
|
Вернуться к началу |
|
|
ainu
Местный
Возраст: 37 Зарегистрирован: 13.11.2010 Сообщения: 133
Группы: Нет
|
|
У меня получилось вручную (getpixel - putpixel), вот только на моём достаточно мощном PC выдаёт 30 FPS, а на caanoo еще меньше. А таких поврхностей в кадре будет штук 12-20.
Сейчас оптимизирую. |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
Powered by phpBB © 2001, 2005 phpBB Group
|