如何使用C#在Android上渲染OpenGL?

问题描述 投票:0回答:1

我有一个用 C# 编写的适用于 .NET 6 的现有应用程序,它使用轻量级 OpenTK (v4) OpenGL 绑定来渲染 OpenGL,该绑定支持 .NET 5+、Open GL 3+ 和 OpenGL ES 2+。

根据OpenTK常见问题解答

OpenTK 可在 Windows、Linux 和 MacOS X 上运行。

(旧版本的 OpenTK 也支持 Android 和 iOS;当前的 OpenTK 可能适用于这些,但未经测试。)

我对 .NET 6 的统一平台承诺感到兴奋,但我只见过使用 Microsoft 新的 .NET 多平台应用程序 UI (.NET MAUI) 框架的跨平台移动项目。 MAUI 似乎是一个包含 Blazor Web 应用程序的 Web 视图 shell。我在存储库的 src/Core/AndroidNative 文件夹中找到了该 shell 的代码,但对于我的目的而言,它似乎非常臃肿。我希望能够访问 Android 特定的功能,而无需 Blazor 和 Web 视图的臃肿。根据这篇博文,Xamarin.Android 可能是答案,但我不确定如何将其引入到我现有的项目中。

我所需要的只是一个简单的外壳:

  1. 使用 GLSurfaceView 创建活动
  2. 获取 OpenGL ES 2 上下文
  3. 使用该上下文运行我当前的 C# 代码

我更喜欢使用 C# 编写 shell,因为引入 Java 代码会使我的构建过程变得复杂,并使我的代码库变得支离破碎。

  • 如何引入所需的Android专用代码?
  • 这将如何改变我的构建过程?
  • 我知道我需要编写 OpenGL ES 兼容的着色器,并且我可能需要更改保存文件的方式。我还需要对当前代码进行哪些其他更改才能确保 Android 兼容性?
c# xamarin.android opengl-es .net-6.0
1个回答
0
投票

我对 .NET 的承诺不再那么兴奋了,因为他们似乎将来不想再在 .NET Maui 中支持 OpenGL :(

正如您提到的,您可以使用 Xamarin 来实现此目的。我最近写了一篇关于如何使用 Xamarin 设置 OpenGL 特别是 Android 的文章:https://ben-5.azurewebsites.net/2023/10/11/lets-create-a-mobile-game-with-xamarin-and -opengl-第 1 部分 它解释了如何将特定于平台的代码与 OpenGL 代码分开。在下一部分中我还将描述如何使用着色器。

© www.soinside.com 2019 - 2024. All rights reserved.