| 
			
				|  | GP2X Community Новостной форум посвященный консолям GP2X
 
 |  
 
	
		| Предыдущая тема :: Следующая тема |  
		| Автор | Сообщение |  
		| Hahahoj 
 Site Admin
 
  
 Пол:
  Возраст: 52
 Зарегистрирован: 08.10.2008
 Сообщения: 1848
 
 Группы:
 
 
 
 | 
			
			 
				| 
 |  
				| Всё ж таки еще раз отреквесчу собранный и готовый к простой инсталяции путем разархивации в папку тулчейн под Винду. _________________
 Просто Вовк
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| BiSe Trojanov 
 Постоялец
 
 
 Пол:
  Возраст: 36
 Зарегистрирован: 21.04.2011
 Сообщения: 18
 Откуда: Казань
 Группы: Нет
 
 
 | 
			
			 
				| 
 |  
				| Боюсь, у меня никаких нервов не хватит собирать компилятор для Винды. Как варианты: 	  | Hahahoj писал(а): |  	  | Всё ж таки еще раз отреквесчу собранный и готовый к простой инсталяции путем разархивации в папку тулчейн под Винду. | 
 1. Поставить виртуальную машину для Убунты. Например, VirtualBox или Virtual PC, на последней надо будет грузить Убунту в режиме консоли из-за некоторых несовместимостей видеокарты.
 2. Воспользоваться тем пакетом, который собрал KidPaddle. Я возился с ним всего полчаса и вполне мог недоглядеть какую-нибудь маленькую загвоздку.
 3. Имея MinGW, собрать bin-utils самому. Варианты с компиляцией на Винде я сразу отбросил до самого крайнего случая. Всё же в первую очередь весь этот софт пишется под gcc.
 4. Извращения с cygwin'ом как это делает Ainu. Кстати, самый оптимальный вариант.
 
 Хоть у меня главная система это Windows, но то, что писать программы под Caanoo я буду, сидя под Убунтой, я принял решение ещё до того, как ко мне прилетела покупка. Начнём хотя бы с отладки, без доступа к SSH консоли я бы помер. Я не приемлю каких-то левых драйверов под Виндой, за сим установить Caanoo так же как в Убунте у меня бы не получилось.
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| BiSe Trojanov 
 Постоялец
 
 
 Пол:
  Возраст: 36
 Зарегистрирован: 21.04.2011
 Сообщения: 18
 Откуда: Казань
 Группы: Нет
 
 
 | 
			
			 
				| 
 |  
				| К сожалению подчинить sdl_ttf не удалось ни в какую. По невыясненной причине модуль работает сверх глючно. При рендеринге шрифтов в Surface постоянные плавающие "EAccessViolation : Access violation". Бороться с этим невозможно. Иногда всё рендерится, иногда просто падает. Причём упадёт или нет зависит от другого присутствующего кода. 
 
 Может вполне заработать. А тот же самый код, где после "exit" написаны ещё пару строк, например, 	  | Код: |  	  | SDL_Init(SDL_INIT_VIDEO or SDL_INIT_JOYSTICK); Surf:=SDL_SetVideoMode(320, 240, 16, SDL_FULLSCREEN or SDL_SWSURFACE);
 
 Joy   :=SDL_JoyStickopen(0);
 SDL_ShowCursor(0);//}
 
 TTF_Init();
 SystemFont :=TTF_OpenFont('./fonts/DejaVuSans.ttf', 12);
 writeln('d1 ',IntToHex(random(1),1),' ',IntToHex(uint32(SystemFont),8));
 color.r:=255;color.g:=0;color.b:=0;color.unused:=255;
 surf:=TTF_RenderUTF8_Blended(SystemFont,Pchar('Menu'),color);
 exit;
 | 
 
 (то есть НЕДОСТЕЖИМЫй не исполняемый в любом случае код), то на строке с рендерингом падение. Ещё падение иногда бывает, если SDL_Init не вывести через writeln. Иногда падает, если не использовать IntToHex. Если бы сам не увидел, не поверил бы. В общем стабильности с этим модулем мне добиться не удалось. Узнать чем вызвано такое поведение не представляется возможным по крайней мере без дебаггера. 	  | Код: |  	  | fontColor:=StrToInt('$'+copy(s,5,2)+copy(s,3,2)+copy(s,1,2)); | 
 
 Все функции грузятся через динлиб, все функции выдают правильные значения, шрифты грузятся. От чего такие вещи понять не могу.
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| Hahahoj 
 Site Admin
 
  
 Пол:
  Возраст: 52
 Зарегистрирован: 08.10.2008
 Сообщения: 1848
 
 Группы:
 
 
 
 | 
			
			 
				| 
 |  
				| Не раз испытывал тоже самое и на обычной брудшеловской сишной sdk-шке при использоании той же sdl_ttf для старых гп-х. Мне к примеру никогда не удавалось менять несколько раз подряд размер шрифта. При этом была закономерность -на компе всё тоже нормально бегало.
 Так что грабли действительно скорее всего в самой либе и лучше временно переключится на что-нибудь другое дав мозгам отдохнуть.
 _________________
 Просто Вовк
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| BiSe Trojanov 
 Постоялец
 
 
 Пол:
  Возраст: 36
 Зарегистрирован: 21.04.2011
 Сообщения: 18
 Откуда: Казань
 Группы: Нет
 
 
 | 
			
			 
				| 
 |  
				| Как такое вообще возможно? Каким образом на него действует код, который вообще недостежим. Судя по тому как меняется размер исполняемых файлов, Паскаль линкует разные библиотеки, ведь просто объявление в uses не заставляет компилятор добавлять весь код внутрь. То есть при использовании IntToHex, компилятор линкует SysUtils, но как влияет наличие дополнительного исходного кода на код, находящийся вообще за тридевять страниц от него? Если бы не я сам писал глючный код, то я бы посоветовал копать в сторону облегчения кода насколько это возможно, но это я уже сделал, легче просто некуда. Уже и разные режимы перепробовал (хотя с самого-самого начала программирования для Caanoo я на всякий случай отключил оптимизацию на корню), и стэк увеливал, ничего не помогает. Как код может зависеть от наличия/отсутствия другого кода, вот чего я не пойму. Я допущу, что это ошибка в sdl_ttf, но как она может быть настолько плавающей? Гейзенбаг как он есть. 
 Вижу несколько выходов:
 1. Попробовать линковать ttf-функции статически. Сомневаюсь, что поможет
 2. Напрямую разбираться с libfreetype.so, рендерить из неё в память хоть bmp-изображения текста (с альфа-каналом, разумеется), и это засовывать в Surface. Если дело не в libfreetype, а в sdl_ttf, то поможет
 3. Пробовать качать исходники SDL и компилировать самому. Может быть в новой версии (а такая вообще есть?) ошибки исправлены
 4. Писать свою реализацию TTF. Поможет в любом случае.
 
 
 Задача не "заставить sdl_ttf работать", эта либа пусть хоть в аду горит, задача "найти легчайший (требующий минимум ресурсов) способ рендерить текст" 	  | Hahahoj писал(а): |  	  | временно переключится на что-нибудь другое дав мозгам отдохнуть. | 
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| Hahahoj 
 Site Admin
 
  
 Пол:
  Возраст: 52
 Зарегистрирован: 08.10.2008
 Сообщения: 1848
 
 Группы:
 
 
 
 | 
			
			 
				| 
 |  
				| Народ еще с прошлого поколения консолей пошел по пути написания своих либ рендерящих текст. Причем Квазист, например, использует Bitmap Font Builder для построения битмапов шрифтов под пару нужных размеров, с которых потом печатает.
 На gp32x.com мелькал еще один способ обхода глюков в работе либы от кого-то из гуру - на старте под нужный размер шрифта и сам фонт шрифт рендерится на поверхность в памяти, а потом печатается уже встроенными самопальными утилитами с этой поверхности не затрагивая глючную либу.
 _________________
 Просто Вовк
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| BiSe Trojanov 
 Постоялец
 
 
 Пол:
  Возраст: 36
 Зарегистрирован: 21.04.2011
 Сообщения: 18
 Откуда: Казань
 Группы: Нет
 
 
 | 
			
			 
				| 
 |  
				| Не, ну хранить в памяти плоскость на 2-5 МБ ОЗУ это конечно круто, благо оборудование позволяет, но это же костыль! Я так понимаю, у многих возникают эти проблемы? Если проблемы ещё с прошлых консолей, почему глюки переместились в это поколение  для пущей совместимости? |  |  
		| Вернуться к началу |  |  
		|  |  
		| Hahahoj 
 Site Admin
 
  
 Пол:
  Возраст: 52
 Зарегистрирован: 08.10.2008
 Сообщения: 1848
 
 Группы:
 
 
 
 | 
			
			 
				| 
 |  
				| 46 кб на 10 размера шрифтик. Вполне по карману. Плюс отрисовка много шустрее. _________________
 Просто Вовк
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| Don Miguel 
 Профи
 
  
 
 Возраст: 75
 Зарегистрирован: 02.11.2008
 Сообщения: 27
 
 Группы:
 
 
 
 | 
			
			 
				| 
 |  
				| Замечательно. Очень жаль, что не было 10 лет назад того
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| quasist 
 Профи
 
  
 Пол:
  Возраст: 39
 Зарегистрирован: 28.10.2008
 Сообщения: 43
 
 Группы:
 
 
 
 | 
			
			 
				| 
 |  
				| GPH говорило(мне), что у них на консоли старая версия SDL и, например, затрагивающая меня проблема непахания SetPosition(или как там её) в SDL_mixer именно из-за версии (причем передали ссылку на офф. changelog где это указано). _________________
 
   |  |  
		| Вернуться к началу |  |  
		|  |  
		| PredatorGLScene 
 Новичок
 
 
 
 Возраст: 42
 Зарегистрирован: 21.10.2011
 Сообщения: 1
 
 Группы: Нет
 
 
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| SyDr 
 Постоялец
 
 
 Пол:
  Возраст: 34
 Зарегистрирован: 18.08.2011
 Сообщения: 29
 Откуда: Беларусь
 Группы: Нет
 
 
 | 
			
			 
				| 
 |  
				| Пытаюсь заставить работать FPC4ARM на винде. Вроде потихонечку идёт. Столкнулся, однако, с проблемой: 
  	  | Код: |  	  | /cygdrive/c/FPC4ARM/ToolChains/GPH_Caanoo/bin/arm-gph-linux-gnueabi-ld: warning: libfreetype.so.6, needed by C:\FPC4ARM\ToolChains\GPH_Caanoo\libs\/libSDL_ttf.s
 o, not found (try using -rpath or -rpath-link)
 C:\FPC4ARM\ToolChains\GPH_Caanoo\libs\/libSDL_ttf.so: undefined reference to `FT
 _Set_Pixel_Sizes'
 ...
 ur.lpr(29,1) Error: Error while linking
 ur.lpr(29,1) Fatal: There were 1 errors compiling module, stopping
 Fatal: Compilation aborted
 | 
 Это при попытке работать с SDL_TTF. libfreetype.so.6 в тулчейне не было, своровал из официального SDK, ничего не изменилось вообще.
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| BiSe Trojanov 
 Постоялец
 
 
 Пол:
  Возраст: 36
 Зарегистрирован: 21.04.2011
 Сообщения: 18
 Откуда: Казань
 Группы: Нет
 
 
 | 
			
			 
				| 
 |  
				| А с самой приставки? 	  | SyDr писал(а): |  	  | своровал из официального SDK, ничего не изменилось вообще. | 
 |  |  
		| Вернуться к началу |  |  
		|  |  
		| SyDr 
 Постоялец
 
 
 Пол:
  Возраст: 34
 Зарегистрирован: 18.08.2011
 Сообщения: 29
 Откуда: Беларусь
 Группы: Нет
 
 
 | 
			
			 
				| 
 |  
				| BiSe Trojanov, пока искал, как её там найти и скопировать - пришла мысля. Проверил, так и есть: libfreetype.so.6 просто символическая ссылка. Заменил на саму библиотеку. Теперь всё компилится. Надо бы сменить обратно на вин-версию symlink. Странно только, что писало, что файл не найден, а не то, что он не подходит. 
 В целом, ситуация такая же, как и выше - краш при попытке отрендерить текст. Сменил на обычный текст (RenderText_Solid), прочитал замечания к функции, добавил для текста отдельную переменную и проверку:
 if (systemfont<>nil) and (textc<>nil) then
 В результате - ни краша, ни текста. Тоже самое в винде работает и выводит текст на экран.
 
 
 Костыль найден. Тяну вместе с исполняемым файлом на консоль все библотеки (хотя, с учётом того, что я её переименовывл, должно хватить только sdl_ttf.so.6). Текст выводится.
 ИграНедоигра не крашится. Необходимо перейти к более серьёзным тестам. В связи с чём возникает вопрос: как нормально перекидывать файлы на консоль/с консоли? А то сейчас: подрубил дата-кабель, подождал, скопировал файл, отрубил дата-кабель, проверил и всё по новой. Нет ли более удобных способов? |  |  
		| Вернуться к началу |  |  
		|  |  
		|  |  
  
	| 
 
 | Вы не можете начинать темы Вы не можете отвечать на сообщения
 Вы не можете редактировать свои сообщения
 Вы не можете удалять свои сообщения
 Вы не можете голосовать в опросах
 Вы не можете вкладывать файлы
 Вы не можете скачивать файлы
 
 |  
 
 
 Powered by phpBB © 2001, 2005 phpBB Group
 
 
 |