【发布时间】:2017-02-18 00:44:15
【问题描述】:
伙计们。 我有一个用 C++ 编写的 opengl 库。我知道我可以使用 Angle,但正因为如此,我需要用 C++ 编写整个应用程序。有没有办法在 UWP 中使用 c++ opengl 并且仍然使用 C# 作为主要语言?
【问题讨论】:
-
也许this 有帮助。您可以在 MSFT 文档中找到很多有关互操作性的信息。
伙计们。 我有一个用 C++ 编写的 opengl 库。我知道我可以使用 Angle,但正因为如此,我需要用 C++ 编写整个应用程序。有没有办法在 UWP 中使用 c++ opengl 并且仍然使用 C# 作为主要语言?
【问题讨论】:
有没有办法在 UWP 中使用 c++ opengl 并且仍然使用 C# 作为主要语言?
ANGLE 目前是唯一让 OpenGL API 在 UWP 中运行的方法。更多详情请参考this thread。
如果你想从 c# 中使用 ANGLE,你可以通过互操作编写你自己的。您还可以在 C++ 中编写低级 OpenGL 内容并将其包装。然后在逻辑级别通过 C# 调用它。
幸运的是,与您有相同要求的人几天前在 GitHub 上创建了一个问题,并从 @mattleibow 获得了示例。 @mattleibow 在this thread 中分享了他的代码。更多详情请参考OpenGL surface from SwapChainPanel declared in XAML in C#。
另外,ANGLE 实际上是用于将 OpenGL ES 转换为 DirectX。所以我建议你改用Win2D。 Win2D 是用于 Windows 8.1 和 Windows 10 上的 XAML 应用程序的新的即时模式 2D 绘图框架。它建立在 DirectX 的高性能基础之上,但旨在提供 C# 和 .NET 开发人员所期望的便利性和易用性。更多详情可以参考this video。
【讨论】:
我意识到你提出这个问题已经很长时间了,但我也需要这样做,所以整理了一个小型 C# 项目,展示如何在 C# 中使用 ANGLE。它包括从 C# 到 GL 的最小绑定(因为 OpenTK 尚未针对 UWP),以及来自 ANGLE 本身的模板应用程序的一部分,它具有所有 SwapChainPanel 等设置。您可以查看here。
【讨论】:
我遇到了这个问题,所以我创建了自己的库。 您可以使用我的新库 (https://github.com/hamarb123/hamarb123.SharpGLES),它在 UWP(和 .NET Framework)上运行 OpenGL ES,它甚至还有一个 GLESSwapChainPanel 类以方便使用。
【讨论】: