Прокрастинатор приветствует!
Это первая статья из цикла по разработке мультиплатформенной игры на языке программирования C# с использованием библиотеки OpenTK, которая предоставляет простой доступ к OpenGL. Так же библиотека берет на себя работу с окнами приложения и, таким образом, упрощает нам жизнь при разработке не только под windows, но и linux и mac системы.
В дополнение к OpenTK мы будем использовать библиотеки Assimp.Net (порт библиотеки Assimp для С++) для загрузки трехмерных моделей, BEPUphysics для реализации физики и SixLabors для работы с двумерной графикой.

Для начала этого набора нам вполне хватит. Все библиотеки устанавливаются с помощью NuGet и, чуть позже, мы этого коснемся.
В качестве текстового редактора я буду использовать Visual Studio Code так как он доступен на всех целевых платформах, бесплатен и его функционала вполне достаточно.
Перед тем, как мы начнем, нужно установить SDK для работы с .Net Core. Сделать это можно по это ссылке: https://dotnet.microsoft.com/download Нас интересует LTS версия .Net Core и на момент написания статьи это 3.1. Выбираем ее и устанавливаем. После установки пишем в терминале dotnet и убеждаемся, что все установлено верно. Если же нет - решите вопрос и возвращайтесь к статье когда все будет в порядке.

Если вы, как и я, используете линукс, то быстрее и надежнее будет установить SDK через ваш пакетный менеджер, но убедитесь в том, что вы устанавливаете именно 3.1 версию.
Со вступлением покончено, можно приступать к самому интересному.
Что бы создать проект нужно проделать несколько простых действий.
Для начала, создадим папку, в которой будут храниться все файлы будущей игры.
Далее нужно выполнить команду, которая создаст каркас консольного приложения для нас.

dotnet new console

Если вы корректно установили .Net Core, то через несколько секунд программа сообщит вам, что файлы успешно созданы и можно переходить к следующему шагу.
Запускаем VS Code и открываем недавно созданную папку.



Скорее всего, IDE сама предложит установить все необходимое для комфортной работы, но если этого не произошло, то вам нужно вот это:
https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp

Следующая наша задача - установка библиотек из NuGet

Делается это довольно просто.
Переходим на сайт https://www.nuget.org/ и в строке поиска находим все необходимое.
Для упрощения вам жизни я просто опубликую команды, которые нужно ввести в консоли(которую можно вызвать прямо в VS Code):

dotnet add package OpenTK --version 4.6.7
dotnet add package BepuPhysics --version 2.3.0
dotnet add package AssimpNet --version 5.0.0-beta1
dotnet add package SixLabors.Fonts --version 1.0.0-beta15
dotnet add package SixLabors.ImageSharp --version 1.0.3

dotnet add package SixLabors.ImageSharp.Drawing --version 1.0.0-beta13

Версии библиотек актуальны на момент написания статьи. В будущем, когда мы будем обновлять библиотеки, на этом будет акцентировано дополнительное внимание
Хорошо. Еще одна настройка перед тем как мы начнем писать код, для того, что бы папка с ресурсами (assets) со всем ее содержимым копировалась при компиляции в папку с исполняемым файлом.
Откройте файл с расширением .csproj и вы найдете там тег ItemGroup. В него нужно добавить код, выделенный отступами.
<ItemGroup>

<Content Include="assets\**\*.*">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>

<PackageReference Include="AssimpNet" Version="5.0.0-beta1" />
<PackageReference Include="BepuPhysics" Version="2.3.0" />
<PackageReference Include="SixLabors.Fonts" Version="1.0.0-beta15" />
<PackageReference Include="SixLabors.ImageSharp" Version="1.0.3" />
<PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta13" />
</ItemGroup>
Осталось только создать саму папку "assets" в корне нашего проекта и базовая инициализация на этом закончена.

Спасибо за внимание



Доброго времени суток.

Это четвертая часть цикла статей "Разработка OpenGL приложения под Android".

Предыдущие статьи:
Разработка OpenGL приложения под Android. Часть 0. Введение.
Разработка OpenGL приложения под Android. Часть 1. Знакомство.
Разработка OpenGL приложения под Android. Часть 2. Матрицы.

Сегодня мы будем работать с освещением.
Это очень важная тема, умение работать с основами освещения пригодится Вам в большинстве Ваших собственных проектов.

Здесь может возникнуть вопрос зачем что-то менять, если по умолчанию в OpenGL уже выставлен источник света и мы и без того видим наши объекты.

Дело в том, что выставленный по умолчанию свет нельзя редактировать: изменять его цвет, насыщенность, положение и другие параметры. Но самое главное это то, что он всего один. Если Вам, к примеру, понадобится еще свет от ламп или фонарика, то стандартное освещение уже не поможет.

Читать подробнее...

Фото:
>>>>
OGLPart3.7z ( 2.65 МБ)






Доброго времени суток.

Это третья часть цикла статей "Разработка OpenGL приложения под Android".

Предыдущие статьи:
Разработка OpenGL приложения под Android. Часть 0. Введение.
Разработка OpenGL приложения под Android. Часть 1. Знакомство.

В прошлой статье мы создали, наверное, самое простое приложение, использующее мощь OpenGL, которое только может быть.
Это всего лишь микроскопическая часть возможностей этой библиотеки. В этой главе я хочу поговорить с Вами о матрицах.

Как пишут во всех уроках и статьях на данную тему, скажу Вам, что, действительно, необходимости знать все свойства матриц у Вас нет, но их понимание способствовало бы скорейшему усвоению всех процессов OpenGL. С помощью матриц происходят смещение, поворот и прочие искажения пространства.

В OpenGL 1.0(именно эту версию мы пока используем) есть три типа матриц: GL_MODELVIEW, GL_PROJECTION и GL_TEXTURE.
Остановимся на каждой из них немного подробнее.

Читать подробнее...

OGLPart2.7z ( 2.65 МБ)




c8b5ef0c246d3709bb9286d0878a8121.png


Доброго времени суток.

Это вторая часть цикла статей "Разработка OpenGL приложения под Android".

Первую часть можно найти здесь: Разработка OpenGL приложения под Android. Часть 0. Введение.

Начнем с того, что сегодня самый лучший день для того, чтобы написать свое первое приложение для android. Если у Вас что-то не получалось до этого момента - будьте уверены, сегодня все получится!

И так. Вы установили новейшую версию Android Studio и все необходимые компоненты для работы с Android 4.4? Немного пощупали, изучили основные принципы работы в данной IDE и готовы покорять мир 3D графики? Отлично! Тогда приступим к работе.
  • В первую очередь создадим проект и назовем его OGLPart1.
Вы можете назвать его как угодно, но мне так будет удобнее. Уроков будет много и что бы не запутаться в них я буду нумеровать проекты эквивалентно статьям. Здесь все просто. Все, что от Вас требуется это указать имя проекта, папку для его хранения и минимальную поддерживаемую версию android. Стандартная процедура.

Читать подробнее...

Фото:
>>>>>
OGLPart1.7z ( 2.64 МБ)




eb8764cc18c904f961e8b2c0d5ca9a0e.png

Доброго времени суток.

Это первая статья из серии программирования 3D графики с использованием OpenGL в среде android приложений.

Я хотел бы начать с полезных ссылок, которые не раз пригодятся Вам при изучении данной темы.

Это Ваш главный ресурс и помощник. Именно здесь лучше всего получать информацию о принципах работы команд и пояснения по функциям и их аргументам. Вас немного может приостановить тот факт, что сайт практически весь на английском языке, но это можно превратить в плюс. Если взять себя в руки и начать переводить неясные Вам вещи, то материал будет усвоен в разы лучше, ведь Вы хорошо поработаете для его изучения. Возможно, получится подучить язык, а это никогда не будет лишним.

В общем и целом, я хотел бы привить Вам большую любовь к изучению документаций. Не важно чем Вы решите заняться в будущем - официальная документация, практически в любом случае, будет полезнее тех статей, что Вы найдете в сети.

Читать подробнее...



Доброго времени суток!
Мое имя в сети Freaky Brainstorm и я android разработчик в одной из частных компаний. Начинающий, совсем еще «зеленый» разработчик, но все когда-то с этого начинали.
Своими публикациями я хотел бы упростить жизнь некоторым людям, которые в связи со своей неопытностью, как и я столкнутся с проблемами, с которыми столкнулся я на пути android разработки.
Приложение над которым я работаю в данный момент очень связанно с 3D графикой и, скорее всего, основной упор в блоге будет сделан на OpenGL.
Я ни в коем случае, не утверждаю, что мои решения являются верными, и что поступать нужно именно таким образом который предлагаю я. Вовсе нет, здесь я просто описываю свое видение решения стоящих передо мной проблем программирования.


^