http://wm-monitoring.ru/ ')) {alert('Спасибо за то что установили нашу кнопку! =)');} else {alert('Очень жаль! =(');}"> http://wm-monitoring.ru/

SDL Archives | Ugolnik's blog

Опубликовано: 01.09.2018

видео SDL Archives | Ugolnik's blog

G.U.N.N/Anonymous Confronted By Fascist S.D.L After Anti-Racism Protest Glasgow

Различные примеры и демонстрации использования OpenGL, GLSL . Все примеры просты до безобразия. Будут полезны новичку в программировании под OpenGL.


SDL 2D Bump Maping

Уроки по OpenGL . Во всех уроках используется Cone3D . Среди уроков “Установка SDL и OpenGL библиотек в Linux”, “Загрузка моделей Quake 2 и PCX текстур”, “OCTREES”, “Рендеринг в текстуру”, “Динамические карты освещённости”.

Данные уроки достаточно давно не обновлялись. В “отмазке” написано – “использовать на свой страх и риск” ;)

UTvideo archives

NeonHelium – 48 уроков по OpenGL. Этот набор уроков гораздо полнее предыдущего.

Пришлось немного повозиться, что бы заставить работать данную связку. Итак, приступим:

Из списка “Link libraries” удаляем все библиотеки. Надеюсь, в будущих версиях Code::Blocks это поправят. В “Other linker options” нужно прописать “-framework SDL -framework Cocoa -framework SDL_image -framework SDL_mixer -framework OpenGL” . Ну или те библиотеки, которые вам нужны. Добавляем к проекту два файла SDLMain.h и SDLMain.m . В свойствах файла SDLMain.m указываем “Compile file” и “Link file”. В опциях проекта снимаем галку “Strip all symbols from binary” Это параметр -s компилятора. Если этого не сделать, то при попытке запуска приложения получим ошибку: dyld: lazy symbol binding failed: lazy pointer not found dyld: lazy pointer not found Trace/BPT trap После компиляции можно вручную выполнить strip . Думаю, что стоит написать скрипт, который будет после компиляции автоматически делать бандл.

Полезные ссылки:

Со времен DOS наверняка многим известна игра Tyrian – отличная аркада. Сейчас найти игру с таким захватывающим геймплеем очень сложно. Разработчики открыли исходные коды (не знал, что Tyrian был написан на Turbo Pascal) и появился кроссплатформенный порт Open Tyrian . На данный момент доступны сорцы только из репозитория и архив с ресурсами из оригинальной игры.

Порт написан на C и использует SDL. Работает игра под Windows, Mac OS X, Linux, а так же на консолях PSP, GP2X, Gizmondo, GameCube, Amiga, и Nokia Internet Tablets. Лицензия GNU GPL v2.

Несколько дней бился над проблемой, почему событие SDL_KEYDOWN приходит, а SDL_KEYUP нет. Ведь раньше все работало. Начал грешить на кривизну нового проекта (читай, моих рук), но этот же проект скомпилированный в Windows работал без проблем. Грешил на проблемы libsdl в Linux – перекомпилировал библиотеку – не помогает.

Совершенно случайно вспомнил о том, что недавно я установил новый билд xneur (переключатель раскладки, на подобии Punto Switcher) – в нем то и оказалась проблема. Выгрузил его из памяти – все работает!

Вышла новая версия врапера glSDL . Работает весьма стабильно и в Windows. Использовать эту библиотеку очень просто. Вместо SDL.h подключается glSDL.h. Для испольиспользования OpenGL нужно добавить флаг SDL_GLSDL в SDL_SetVideoMode(). При этом сам код программы не меняется – используются стандартные вызовы SDL_*

Библиотека предназначена для вывода текста в SDL-приложениях. Отличается от прочих подобных библиотек тем, что использует вкомпиленный фонт. На данный момент не поддерживается utf-8. Используется фонт с размером матрицы символа 8x8px 1-bit. Лицензия GPLv2.

SDL_Surface* FNT_Render(const char* text, unsigned int len, SDL_Color color); SDL_Surface* FNT_RenderD(const char* text, SDL_Color color); text – указатель на текст len – длина строки color – цвет текста

Ссылка на библиотеку sdl_picofont .

Небольшая статья по установке и настройке SDL для Mac OS X . В качестве IDE используется XCode.

На радостях от того, что мне вернули GamePad было решено внести поддержку джойстика в “Arkanoid: Space Ball” . Написать поддержку джойстика в игре оказалось для меня проще, чем подключить сам джойстик. На самом деле, джойстик подключается очень просто. Но я не заметил, что одна опция в конфиге кернела не была установлена. Но теперь все в порядке ;)

UPD: Что то я погорячился – под Windows функция SDL_NumJoysticks() возвращает “0” , хотя сама Windows его видит и адекватно определяет нажатия на кнопки.

По своей глупости нарвался на ошибку. Есть обработчик ивентов (клавиатура, мышь, джойстик), у мыши кроме состояния кнопок есть еще координаты и смещение относительно последней выборки. Код выглядит приблизительно так:

SDL_Event evt; g_nMouseDX = 0; g_nMouseDY = 0; while(SDL_PollEvent(&evt)) { switch(evt.type) { case SDL_MOUSEMOTION: g_nMouseDX += evt.motion.xrel; g_nMouseDY += evt.motion.yrel; break; } }

Так вот, моя ошибка была тут:

g_nMouseDX += evt.motion.xrel; g_nMouseDY += evt.motion.yrel;

Я просто не учитывал, что при выполнении этого кода на медленном компьютере, ивентов за каждый фрейм может приходить более одного. И по этой причине я терял данные о смещении мыши. Простая замена присвоения “=” на добавление “+=” решило проблему.

Карта
rss