Как визуализировать OpenGL на Android с помощью C#? ⇐ C#
-
Гость
Как визуализировать OpenGL на Android с помощью C#?
У меня есть приложение, написанное на C# для .NET 6, которое отображает OpenGL с помощью облегченных привязок OpenTK (v4) OpenGL, которые поддерживают .NET 5+, Open GL 3+ и OpenGL ES 2+.
Согласно FAQ по OpenTK:
OpenTK работает в Windows, Linux и MacOS X.
(Старые версии OpenTK также поддерживают Android и iOS; текущий OpenTK может работать с ними, но он не проверен.)
Меня воодушевляет обещание .NET 6 создать единую платформу, но я видел только кроссплатформенные мобильные проекты, использующие новую платформу Microsoft .NET Multi-platform App UI (.NET MAUI). MAUI представляет собой оболочку веб-представления, содержащую веб-приложение Blazor. Код этой оболочки я нашел в папке src/Core/AndroidNative репозитория, но для моих целей он кажется очень раздутым. Я хочу иметь доступ к функциям, специфичным для Android, без раздувания Blazor и веб-представления. Согласно этому сообщению в блоге, решением может стать Xamarin.Android, но я не знаю, как внедрить его в существующий проект.
Все, что мне нужно, это простая оболочка, которая:
[*]Создает действие с помощью GLSurfaceView [*]Получает контекст OpenGL ES 2. [*]Выполняет мой текущий код C# с этим контекстом.
Я бы предпочел, чтобы оболочка была на C#, поскольку введение кода Java усложнило бы процесс сборки и фрагментировало бы мою кодовую базу.
[*]Как я могу ввести необходимый код для Android? [*]Как это изменит мой процесс сборки? [*]Я знаю, что мне нужно написать шейдеры, совместимые с OpenGL ES, и что мне, вероятно, нужно изменить способ сохранения файлов. Какие еще изменения мне нужно внести в текущий код, чтобы обеспечить совместимость с Android?
У меня есть приложение, написанное на C# для .NET 6, которое отображает OpenGL с помощью облегченных привязок OpenTK (v4) OpenGL, которые поддерживают .NET 5+, Open GL 3+ и OpenGL ES 2+.
Согласно FAQ по OpenTK:
OpenTK работает в Windows, Linux и MacOS X.
(Старые версии OpenTK также поддерживают Android и iOS; текущий OpenTK может работать с ними, но он не проверен.)
Меня воодушевляет обещание .NET 6 создать единую платформу, но я видел только кроссплатформенные мобильные проекты, использующие новую платформу Microsoft .NET Multi-platform App UI (.NET MAUI). MAUI представляет собой оболочку веб-представления, содержащую веб-приложение Blazor. Код этой оболочки я нашел в папке src/Core/AndroidNative репозитория, но для моих целей он кажется очень раздутым. Я хочу иметь доступ к функциям, специфичным для Android, без раздувания Blazor и веб-представления. Согласно этому сообщению в блоге, решением может стать Xamarin.Android, но я не знаю, как внедрить его в существующий проект.
Все, что мне нужно, это простая оболочка, которая:
[*]Создает действие с помощью GLSurfaceView [*]Получает контекст OpenGL ES 2. [*]Выполняет мой текущий код C# с этим контекстом.
Я бы предпочел, чтобы оболочка была на C#, поскольку введение кода Java усложнило бы процесс сборки и фрагментировало бы мою кодовую базу.
[*]Как я могу ввести необходимый код для Android? [*]Как это изменит мой процесс сборки? [*]Я знаю, что мне нужно написать шейдеры, совместимые с OpenGL ES, и что мне, вероятно, нужно изменить способ сохранения файлов. Какие еще изменения мне нужно внести в текущий код, чтобы обеспечить совместимость с Android?
Мобильная версия