| 
			
				|  | GP2X Community Новостной форум посвященный консолям GP2X
 
 |  
 
	
		| Предыдущая тема :: Следующая тема |  
		| Автор | Сообщение |  
		| ainu 
 Местный
 
 
 
 Возраст: 38
 Зарегистрирован: 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
 
  
 Пол:
  Возраст: 52
 Зарегистрирован: 08.10.2008
 Сообщения: 1848
 
 Группы:
 
 
 
 | 
			
			 
				| 
 |  
				| Ты разберись что хочешь. Поверхность - это ближе к 3д движку (соответственно не SDL, а что-то своё, работающее с фреймбуфером напрямую, но скорее всего, увы, memset и memcopy не прокатят (за редким исключением трансформации строчек, где можно придумать алгоритм уменьшения линии на основе последовательности вызовов мемкопи с изменяющимся по необходимости шагом и табличкой размеров таких шагов привязанных к нужному масштабу). Если про трансформирование же именно объектов как плоскостей, то надо, имхо, поближе присматриваться к OPEN GL.
 
 Описание софтовой реализации такого масштабирования с точки зрения максимальной оптимизации кода есть в книге Ламота "Секреты программирования игр" довиндозной поры, там на основе этого построена и описана гамма близкая по графике к Вольфенштейну.
 Можно также поковырять исходники Квазиста (Флешчасмер 1, эх, и потерянные исходники нулевого Часмера, если он сам не соблаговолит откомментить, но думаю он всё равно пошлет именно туда и это будет его единственный комментарий).
 _________________
 Просто Вовк
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| ainu 
 Местный
 
 
 
 Возраст: 38
 Зарегистрирован: 13.11.2010
 Сообщения: 133
 
 Группы: Нет
 
 
 | 
			
			 
				| 
 |  
				| Поверхность - вольный перевод слова Surface, это основная структура в SDL, там хранятся изображения, в этойже структуре объявлен экран. Например, фунция SDL_Rotozoom при вызове возвращает Surface, она же поверхность. ТО, что я видел в интернете, оперируют с набором даных, я ищу то, чему можно скормить переменную типа Surface (загруженную SDL и которую можно вывести на экран), и которая вернёт изменнённую Surface. SDL не умеет выводить на экран посто массив данных и получать массив данных просто из фала с картинкой. Верннее можно но низкоуровневыми штуками (смещение указателя в обасть памяти).
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| Hahahoj 
 Site Admin
 
  
 Пол:
  Возраст: 52
 Зарегистрирован: 08.10.2008
 Сообщения: 1848
 
 Группы:
 
 
 
 | 
			
			 
				| 
 |  
				| А я тебе про что? _________________
 Просто Вовк
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| ainu 
 Местный
 
 
 
 Возраст: 38
 Зарегистрирован: 13.11.2010
 Сообщения: 133
 
 Группы: Нет
 
 
 | 
			
			 
				| 
 |  
				| Туплю, про то же. Просто действительно странно-вращение готовое на SDL есть, для этого три минимум библиотеки видел, а сдвига построчного нет, хотя последний и быстрее работает, и в играх может использоваться.
 Про memcopy я понял, сам попробую написатьчерез getpixel-putpixel.
 Вот заставить на кену работаь opengl чтолибо я не смог, кроме странного синтаксиса код, использующий DGE.
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| quasist 
 Профи
 
  
 Пол:
  Возраст: 39
 Зарегистрирован: 28.10.2008
 Сообщения: 43
 
 Группы:
 
 
 
 | 
			
			 
				| 
 |  
				| Я думаю, лучше было бы отрисовать вручную, а на поверхность SDL загонять в последнюю очередь. Мало ли как себя будет SDL вести через лет 10... _________________
 
   |  |  
		| Вернуться к началу |  |  
		|  |  
		| ainu 
 Местный
 
 
 
 Возраст: 38
 Зарегистрирован: 13.11.2010
 Сообщения: 133
 
 Группы: Нет
 
 
 | 
			
			 
				| 
 |  
				| У меня получилось вручную (getpixel - putpixel), вот только на моём достаточно мощном PC выдаёт 30 FPS, а на caanoo еще меньше. А таких поврхностей в кадре будет штук 12-20. Сейчас оптимизирую.
 |  |  
		| Вернуться к началу |  |  
		|  |  
		|  |  
  
	| 
 
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 Вы не можете вкладывать файлы
 Вы не можете скачивать файлы
 
 |  
 
 
 Powered by phpBB © 2001, 2005 phpBB Group
 
 
 |