<!DOCTYPE html> <html> <meta charset="utf-8"> <head> <link rel="stylesheet" href="../../style.css"> </head> <body> <script data-goatcounter="https://services.opengamestudio.org:443/count" async src="//services.opengamestudio.org:443/count.js"></script> <div id="header"> <div> <strong id="title">Open Game Studio</strong> <div id="lang"> <a href="../../en/news/osg-sample.html">EN</a> <a href="../../ru/news/osg-sample.html">RU</a> </div> </div> <div class="header2"> <div class="menu"> <a href="../../ru/news/index.html">Новости</a> <a href="../../ru/game/index.html">Игры</a> <a href="../../ru/tool/index.html">Инструменты</a> <a href="../../ru/page/about.html">О нас</a> </div> <a class="discord" href="https://discord.gg/3A6THQabNf"> <img src="../../images/discord.png"></img> </a> <div class="clear"></div> </div> </div> <center> <h1>В новостях...</h1> <div class="news_item"> <h2 class="news_item_title"> <a href="osg-sample.html">Приложение OpenSceneGraph</a> </h2> <p class="news_item_date"> 2017-05-12 00:00 </p> <div class="news_item_contents"> <p><img src="../../images/2017-05_osg-sample.png" alt="Ракета в дали" /></p> <p>Эта статья описывает создание самоучителей по сборке приложения OpenSceneGraph на Linux, macOS, Windows и Android в апреле 2017.</p> <p>Предыдущие самоучители описывали установку OpenSceneGraph на Linux, macOS, Windows и отображение модели с помощью стандартного инструмента <strong>osgviewer</strong>. На этот раз результатом нашей работы стало <a href="https://github.com/OGStudio/openscenegraph-cross-platform-guide-application">приложение OpenSceneGraph</a>, которое работает на Linux, macOS, Windows и Android.</p> <p>Приложение очень простое. Оно умеет следующее:</p> <ol> <li>Создание окна для отрисовки</li> <li>Загрузка модели</li> <li>Отрисовка модели с помощью простых шейдеров GLSL</li> <li>Перемещение модели с помощью мыши на Linux, macOS, Windows и пальца на Android</li> </ol> <p>Создать самоучители для Linux, macOS, Windows было настолько простой и понятной задачей, что мы справились с ней за пару недель. Оставшуюся половину месяца мы потратили на создание самоучителя для Android.</p> <p>Наша <a href="2016-october-recap.html">первая успешная сборка под Android</a> в прошлом году требовала множество неочивидных телодвижений. В этот раз мы хотели получить более чистый, быстрый и дешёвый подход.</p> <p>Нам это удалось. В результате всё, что нужно для работы приложения OpenSceneGraph на Android, уместилось в набор из нескольких файлов и небольших изменений для стандартного проекта Android Studio (с поддержкой C++).</p> <p>Краткий перечень файлов:</p> <ol> <li>Поверхность GLES2</li> <li>Activity для отрисовки на этой поверхности</li> <li>Интерфейс Java для нативной библиотеки</li> <li>Реализация нативной библиотеки на C++</li> <li>Файл CMake для сборки нативной библиотеки</li> <li>Activity layout</li> <li>Модель для отрисовки</li> </ol> <p>Краткий перечень изменений проекта:</p> <ol> <li>Обновление Android manifest для использования GLES2 и Activity</li> <li>Использование файла CMake нативной библиотеки в проектном файле CMake</li> </ol> <p>Документация OpenSceneGraph предполагает сборку OpenSceneGraph вне Android Studio с помощью CMake. Такой подход имеет следующие ограничения:</p> <ol> <li>Ручная сборка OpenSceneGraph под каждую платформу</li> <li>Ручное копирование собранных библиотек OpenSceneGraph в проект Android Studio</li> </ol> <p>Наш подход включает в себя сборку OpenSceneGraph для тех платформ, для которых собирается проект Android Studio. К тому же, OpenSceneGraph используется как часть проекта, поэтому нет никакой дополнительной рутины: достаточно просто пересобрать проект, и всё готово.</p> <p>На этом мы заканчиваем описание создания самоучителей по сборке приложения OpenSceneGraph на Linux, macOS, Windows и Android в апреле 2017.</p> </div> </div> <div id="footer"> Сайт сгенерирован <a href="http://opengamestudio.org/pskov/ru">ПСКОВОМ</a> из <a href="http://github.com/ogstudio/site-opengamestudio">этого исходного кода</a>. Сайт размещён на <a href="https://pages.github.com">GitHub Pages</a>. </div> </center> </body> </html>