• Mastering Android NDK

      В конце прошлого года вышла наша вторая книга про нативную разработку под Android с использованием Android NDK и C++ (про первую уже было рассказано на Хабре).

      image

      www.packtpub.com/application-development/mastering-android-ndk

      Читать дальше →
    • Мультиплатформенный аудио плеер на C++ и OpenAL

        Так сложилось, что большую часть жизни я пользовался Windows и привык воспроизводить аудио файлы с помощью Winamp. Он очень удобно интегрируется с командной строкой — запустил любой аудио файл и готово. После перехода на Linux и OS X (в основном по работе, но Mac использую и дома вместе с виндой) возникла острая необходимость найти альтернативу. Перепробывал большое количестко крафических плееров. Основная их проблема — это отсутствие нормальной интеграции с командной строкой и часто поддержка только одной из платформ: либо Linux, либо OS X. С консольными плеерами ситуация получше: mpg123 и mpg321 практически идеально делают именно то, что надо. Вот только появилось одно большое «но». Они не умеют играть .ogg и трекерную музыку (.it, .mod, .xm, .s3m и прочие), которой тоже накопилось достаточно и расставаться с ней совершенно не хотелось.
        Читать дальше →
      • Wal Commander — замена Far Manager под OS X и Linux

          Привет Хабр!

          В августе я писал на Хабре пост о том, как начал развивать открытый файловый менеджер Wal Commander. После этого проявился хабраэффект: на GitHub пришло шесть человек с pull request'ами, а на почту свалилось полсотни писем с различными пожеланиям, багрепортами и просьбами добавить фичи. Большинство из них было реализовано в версии 0.17, которую мы выпустили в сентябре. Но дело совсем не в этом…

          Читать дальше →
        • Wal Commander — замена Far Manager под Linux

            Давным давно я озаботился поиском подходящего файлового менеджера под Linux, который был бы похож на Far Manager. Визуально похожих было много, но ни один даже близко не подходил по совместимости горячих клавиш и шорткатов. А встроенные просмотрщик файлов и текстовый редактор вызывали уныние. Поскольку Линукс в то время в основном был нужен дома для забавы, то поиски перешли в пассивную фазу. Но производственная необходимость заставила посмотреть на проблему по-новому.

            Читать дальше →
          • Передача умных указателей по константной ссылке. Вскрытие

              Умные указатели часто передаются в другие функции по константной ссылке. Эксперты C++, Андрей Александреску, Скотт Мейэрс и Герб Саттер, обсуждают этот вопрос на конференции C++ and Beyond 2011 (Смотреть с [04:34] On shared_ptr performance and correctness).

              По сути, умный указатель, который передан по константной ссылке, уже живёт в текущей области видимости где-то в вызывающем коде. Если он хранится в члене класса, то может случиться так, что этот член будет обнулён. Но это не проблема передачи по ссылке, это проблема архитектуры и политики владения.

              Но этот пост не про корректность. Здесь мы рассмотрим производительность, которую мы можем получить при переходе на константные ссылки. На первый взгляд может показаться, что единственная выгода это отсутствие атомарных инкрементов/декрементов счётчика ссылок при вызове конструктора копирования и деструктора. Давайте напишем немного кода и посмотрим более внимательно, что же происходит под капотом.

              Читать дальше →
            • VSDCT на OpenGL ES 3

                Давно хотел сделать демку VSDCT на мобильном телефоне. VSDCT (Virtual Shadow Depth Cubemap Texture) это представление cubemap текстуры, когда вместо 6 отдельных граней используется одна обычная 2D текстура-атлас, в которой исходные грани кубической карты помещены в виде плотно упакованных тайлов. Посмотрим, как сделать тени от точечного источника света, использую эту технику.

                image

                Читать дальше →
                • +21
                • 9.2k
                • 5
              • Разрабатываем под Linux из Windows через sshd: настройка Far и NetBox

                  Иногда бывает так, что разработчики вынуждены работать под Windows (например, привычка или политика компании) но им надо вносить изменения в какой-то переносимый код собирать его под Linux. Можно просто поставить виртуальную машину (например, Oracle Virtual Box) и работать прямо в ней. А можно настроить систему так, чтобы работать в Far в Windows, иметь доступ ко всей файловой системе виртуалки и выполнять все команды прямо из Far. Посмотрим как это настроить на примере Virtual Box, Ubuntu, Far Manager и плагин NetBox.
                  Читать дальше →
                • Разработка на С++ для BlackBerry 10 без использования IDE (с использованием OpenGL ES 2)

                    Под BlackBerry OS 10 есть отличная среда разработки: QNX Momentics IDE, на базе Eclipse. И всё бы хорошо, но когда дело доходит до автоматизации сборки билдов, настройки билд-конфигураций на TeamCity, то IDE нужна как собаке пятая нога. Именно это было самой большой проблемой при портировании нашего движка на BlackBerry. Давайте разберёмся, как можно собрать проект, упаковать дистрибутив, подписать его и запустить на эмуляторе — и всё это без использования IDE.

                    Читать дальше →
                  • Система достижений (achievements) в Linderdaum Puzzle

                      Не так давно на Хабре поднимался вопрос о проектировании системы достижений для игры. В комментах шло бурное и плодотворное обсуждение различных вариантов. Тогда мы уже тестировали нашу игру, готовились к релизу и поучаствовать в дебатах я не смог. Но увидев топик сразу же подумал: «У нас же есть как раз такая работающая система. Почему бы о ней не рассказать?». Подумал и записал в todo-list. Сегодня настало время рассказать, как это работает в нашем игровом проекте Linderdaum Puzzle.

                      Читать дальше →
                    • Делаем OpenGL ES LiveWallpaper на Linderdaum Engine под Android

                      • Tutorial
                      Привет Хабр!

                      Тема создания LiveWallpaper под Android уже хорошо обкатана: есть туториалы на чистой Java, есть туториалы на Java с OpenGL ES 1.0/2.0, есть… да чего только нет!

                      Сегодня мы посмотрим, как быстро сделать LiveWallpaper под Android на С++ используя Linderdaum Engine и GLSL.

                      Читать дальше →
                      • +23
                      • 10.1k
                      • 2
                    • 3D стереофотография своими руками

                        Для бюджетной съёмки 3D контента существует три варианта:
                        • смартфоны и мыльницы с двумя встроенными камерами: LG Optimus 3D, HTC Evo 3D; Fuji FinePix REAL 3D
                        • съёмка двух кадров одним фотоаппаратом с разных точек;
                        • насадки на обычный зеркальный фотоаппарат — 3D объективы, например Loreo3D;
                        • два зеркальных фотоаппарата с синхронным спуском — это уже не бюджетно, но даст наилучшее качество.

                        С первым вариантом всё просто — он несколько дороже и позволяет делать готовые 3D фотографии с обычного телефона. Ничего хитрого: навёл — нажал кнопку — получил фото.

                        Вариант со съёмкой двух кадров одним фотоаппаратом с разных точек имеет существенное ограничение — снять динамичную сцену не получится, потому что пока вы переставляете фотоаппарат с места на место, то действующих лиц уже и след простынет.

                        Остановимся более подробно на третьем варианте: он особенно интересен, если у вас уже есть обычный зеркальный фотоаппарат.

                        image

                        Читать дальше →
                      • Разработка под Android с использованием Linderdaum Engine

                          Привет хабрасообщество!

                          Тема написания приложений под андроид на С++ незаслуженно забыта. Сегодня мы узнаем как писать многоплатформенные приложения под Android используя Linderdaum Engine.

                          Читать дальше →
                        • Быстрая сборка С++ библиотек под Андроид

                            Привет хабрасообщество!

                            Многие задают вопрос: «У нас есть куча библиотек на С++, которые мы хотим собрать под Андроид. Как это сделать?». Ниже по шагам описан возможно самый простой способ это сделать.

                            Читать дальше →
                            • +26
                            • 8.4k
                            • 8