Различные примеры и демонстрации использования OpenGL, GLSL. Все примеры просты до безобразия. Будут полезны новичку в программировании под OpenGL.
Различные примеры и демонстрации использования OpenGL, GLSL. Все примеры просты до безобразия. Будут полезны новичку в программировании под OpenGL.
Уроки по OpenGL. Во всех уроках используется Cone3D. Среди уроков “Установка SDL и OpenGL библиотек в Linux”, “Загрузка моделей Quake 2 и PCX текстур”, “OCTREES”, “Рендеринг в текстуру”, “Динамические карты освещённости”.
Данные уроки достаточно давно не обновлялись. В “отмазке” написано – “использовать на свой страх и риск”
NeonHelium – 48 уроков по OpenGL. Этот набор уроков гораздо полнее предыдущего.
Пришлось немного повозиться, что бы заставить работать данную связку. Итак, приступим:
dyld: lazy symbol binding failed: lazy pointer not found dyld: lazy pointer not found Trace/BPT trap
Полезные ссылки:
Со времен 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. Используется фонт с размером матрицы символа 8×8px 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);
Ссылка на библиотеку 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;
Я просто не учитывал, что при выполнении этого кода на медленном компьютере, ивентов за каждый фрейм может приходить более одного. И по этой причине я терял данные о смещении мыши. Простая замена присвоения “=” на добавление “+=” решило проблему.