На HiDPI мониторах downscaled текстуры выглядят мягко говоря не очень красиво. Искал способ решить эту проблему. В итоге мои исследования привели к такому не самому легковесному решению. Получить device pixel ratio для настройки размров canvas. Получить размер canvas и разрешение …
Development
Simple Viewer GL: исправление GIF
Некоторые пользователи моего вьювера жаловались на медленное проигрывание GIF-анимации во вьювере. И чем больше по размеру GIF-файл, тем медленнее происходит загрузка следующего фрейма. И проблема была явно не в медленном декодировании фрейма и его загрузке в GL-текстуру. Все оказалось проще. …
История поиска одного бага
Довольно много времени потратил на поиск «плавающего» бага. За это время успел отрефакторить кучу кода, до которого руки не доходили ранее. Но баг не ловился. И в его поимке не смогли помочь ни Xcode Instruments, ни Xcode Analyzer (фронтэнд к …
Emscripten: события клавиатуры в iframe
Столкнулся с проблемой на itch.io, когда приложение запущенной внутри iframe, то оно не получает события клавиатуры. Придумал вот такой workaround: К событию postRun добавляем установку листенера на событие mousedown. Теперь при клике мышью на канавасе с игрой события от клавиатуры …
Flexible and Economical UTF-8 Decode
Давно использую декодер, состоящий из кучи бранчей и логических операций. Вот вариант без бренча (тернарный оператор в данном случае брачнем не является), двух логических операций и таблицы – Flexible and Economical UTF-8 Decode
Texture Packer
Это одна из тех утилит, которую я использую на постоянной основе и благодаря которой я избавлен от львиной доли рутины. Да, и так бывает – автор пользуется своим поделием. Texture Packer для Linux и macOS – утилита, которая упаковывает набор …
C++11 countof
Наверняка многие «плюсовыми» используют макрос, подобный нижеприведенному: Он хорош до тех пор, пока в качестве array в него не будет передан указатель на array. Компилятор проглотит и ничего не скажет, а результат будет совсем не тот, которого ожидает разработчик. Благодаря …
Emscripten + OS X El Capitan
Emscripten is an LLVM-based project that compiles C and C++ into highly-optimizable JavaScript in asm.js format. This lets you run C and C++ on the web at near-native speed, without plugins. Решил еще раз установить Emscripten с помощью brew, на …
Show Swords
Клон игры Squid Rage. Больше клонов богу клонов. Я занимался разработкой движка и разработкой кода игры работая в компании Synesis. Графикой, музыкой, анимациями, и прочим, не связанным с программированием занимались другие отличные специалисты. Рассказать весь процесс разработки, внутреннее устройство движка …