Золотые страницы форума GP2X Community
Новостной форум посвященный консолям GP2X
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   СудокуСудоку    Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Трансформация поверхностей на SDL

 
Начать новую тему   Ответить на тему    Список форумов GP2X Community -> Программирование: Консоли GP2X F100 F200 Wiz Caanoo
Предыдущая тема :: Следующая тема  
Автор Сообщение
ainu

Местный



Возраст: 30
Зарегистрирован: 13.11.2010
Сообщения: 133

Группы: Нет

СообщениеДобавлено: Сб Дек 25, 2010 8:46 pm    Заголовок сообщения: Трансформация поверхностей на SDL Ответить с цитатой

Ищу библиотеку/код для трансфомации поверхностей на 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.
Вернуться к началу
Посмотреть профильainu сейчас оффлайн  Отправить личное сообщение
Hahahoj

Site Admin


Пол: Пол:Мужской
Возраст: 44
Зарегистрирован: 08.10.2008
Сообщения: 1848

Группы: 
[ Команда сайта ]
[Модераторы Модераторы ]


СообщениеДобавлено: Вс Дек 26, 2010 3:28 am    Заголовок сообщения: Ответить с цитатой

Ты разберись что хочешь. Поверхность - это ближе к 3д движку (соответственно не SDL, а что-то своё, работающее с фреймбуфером напрямую, но скорее всего, увы, memset и memcopy не прокатят (за редким исключением трансформации строчек, где можно придумать алгоритм уменьшения линии на основе последовательности вызовов мемкопи с изменяющимся по необходимости шагом и табличкой размеров таких шагов привязанных к нужному масштабу).
Если про трансформирование же именно объектов как плоскостей, то надо, имхо, поближе присматриваться к OPEN GL.

Описание софтовой реализации такого масштабирования с точки зрения максимальной оптимизации кода есть в книге Ламота "Секреты программирования игр" довиндозной поры, там на основе этого построена и описана гамма близкая по графике к Вольфенштейну.
Можно также поковырять исходники Квазиста (Флешчасмер 1, эх, и потерянные исходники нулевого Часмера, если он сам не соблаговолит откомментить, но думаю он всё равно пошлет именно туда и это будет его единственный комментарий).

_________________
Просто Вовк
Вернуться к началу
Посмотреть профильHahahoj сейчас оффлайн  Отправить личное сообщение
ainu

Местный



Возраст: 30
Зарегистрирован: 13.11.2010
Сообщения: 133

Группы: Нет

СообщениеДобавлено: Вс Дек 26, 2010 12:44 pm    Заголовок сообщения: Ответить с цитатой

Поверхность - вольный перевод слова Surface, это основная структура в SDL, там хранятся изображения, в этойже структуре объявлен экран.
Например, фунция SDL_Rotozoom при вызове возвращает Surface, она же поверхность. ТО, что я видел в интернете, оперируют с набором даных, я ищу то, чему можно скормить переменную типа Surface (загруженную SDL и которую можно вывести на экран), и которая вернёт изменнённую Surface. SDL не умеет выводить на экран посто массив данных и получать массив данных просто из фала с картинкой. Верннее можно но низкоуровневыми штуками (смещение указателя в обасть памяти).
Вернуться к началу
Посмотреть профильainu сейчас оффлайн  Отправить личное сообщение
Hahahoj

Site Admin


Пол: Пол:Мужской
Возраст: 44
Зарегистрирован: 08.10.2008
Сообщения: 1848

Группы: 
[ Команда сайта ]
[Модераторы Модераторы ]


СообщениеДобавлено: Вс Дек 26, 2010 1:13 pm    Заголовок сообщения: Ответить с цитатой

А я тебе про что?
_________________
Просто Вовк
Вернуться к началу
Посмотреть профильHahahoj сейчас оффлайн  Отправить личное сообщение
ainu

Местный



Возраст: 30
Зарегистрирован: 13.11.2010
Сообщения: 133

Группы: Нет

СообщениеДобавлено: Вс Дек 26, 2010 2:59 pm    Заголовок сообщения: Ответить с цитатой

Туплю, про то же.
Просто действительно странно-вращение готовое на SDL есть, для этого три минимум библиотеки видел, а сдвига построчного нет, хотя последний и быстрее работает, и в играх может использоваться.
Про memcopy я понял, сам попробую написатьчерез getpixel-putpixel.
Вот заставить на кену работаь opengl чтолибо я не смог, кроме странного синтаксиса код, использующий DGE.
Вернуться к началу
Посмотреть профильainu сейчас оффлайн  Отправить личное сообщение
quasist

Профи


Пол: Пол:Мужской
Возраст: 31
Зарегистрирован: 28.10.2008
Сообщения: 43

Группы: 
[Модераторы Модераторы ]


СообщениеДобавлено: Вт Дек 28, 2010 9:26 pm    Заголовок сообщения: Ответить с цитатой

Я думаю, лучше было бы отрисовать вручную, а на поверхность SDL загонять в последнюю очередь. Мало ли как себя будет SDL вести через лет 10...
_________________
Вернуться к началу
Посмотреть профильquasist сейчас оффлайн  Отправить личное сообщение
ainu

Местный



Возраст: 30
Зарегистрирован: 13.11.2010
Сообщения: 133

Группы: Нет

СообщениеДобавлено: Вт Дек 28, 2010 9:51 pm    Заголовок сообщения: Ответить с цитатой

У меня получилось вручную (getpixel - putpixel), вот только на моём достаточно мощном PC выдаёт 30 FPS, а на caanoo еще меньше. А таких поврхностей в кадре будет штук 12-20.
Сейчас оптимизирую.
Вернуться к началу
Посмотреть профильainu сейчас оффлайн  Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов GP2X Community -> Программирование: Консоли GP2X F100 F200 Wiz Caanoo Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы




Powered by phpBB © 2001, 2005 phpBB Group

Locations of visitors to this page