【发布时间】:2009-02-11 09:22:53
【问题描述】:
是否有免费的 C# OpenGL 支持库?如果是这样,我应该使用哪一个?在哪里可以找到示例项目?
C# 是否为 OpenGL 提供类?
【问题讨论】:
-
我知道这是一个非常古老的线程,但您可能会对Unity 感兴趣
是否有免费的 C# OpenGL 支持库?如果是这样,我应该使用哪一个?在哪里可以找到示例项目?
C# 是否为 OpenGL 提供类?
【问题讨论】:
OpenTK 是对 Tao API 的改进,因为它使用具有重载、强类型枚举、异常和标准 .NET 类型的惯用 C# 样式:
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
相对于仅仅反映 C API 的 Tao:
Gl.glBegin(Gl.GL_POINTS); // double "gl" prefix
Gl.glColor3ub(255, 255, 0); // have to pass RGB values as separate args
Gl.glVertex3f(0, 1, 0); // explicit "f" qualifier
这使得移植更加困难,但使用起来非常好。
作为奖励,它提供字体渲染、纹理加载、输入处理、音频、数学...
2016 年 1 月 18 日更新:今天,OpenTK 维护者拥有stepped away from the project,其未来不确定。论坛充满了垃圾邮件。维护者建议迁移到 MonoGame 或 SDL2#。
2020 年 6 月 30 日更新:OpenTK 已经有了新的维护者一段时间,并且拥有一个活跃的不和谐社区。所以之前使用其他库的建议不一定正确。
【讨论】:
我认为@korona 的意思是因为它只是一个 C API,您可以直接从 C# 中使用它,只需像这样大量输入:
[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
不幸的是,您需要为您调用的每个 OpenGL 函数执行此操作,这基本上是 Tao 为您所做的。
【讨论】:
【讨论】:
SharpGL 是一个可让您在 Windows 窗体或 WPF 应用程序中使用 OpenGL 的项目。
【讨论】:
您可以在没有包装器的情况下使用 OpenGL,并在 C# 中本地使用它。 正如 Jeff Mc 所说,您必须使用 DllImport 导入所有需要的函数。
他遗漏的是必须先创建上下文,然后才能使用任何 OpenGL 函数。这并不难,但几乎没有其他不那么直观的 DllImports 需要完成。
我在 VS2012 中创建了一个示例 C# 项目,几乎是让 OpenGL 在 Windows 机器上运行所需的最低要求。它只会将窗口涂成蓝色,但它应该足以让您入门。该示例可以在http://www.glinos-labs.org/?q=programming-opengl-csharp 找到。在底部查找 No Wrapper 示例。
【讨论】:
我还推荐Tao Framework。但还有一点需要注意:
看看这些教程: http://www.taumuon.co.uk/jabuka/
【讨论】:
您希望这些支持库做什么?仅使用 C# 中的 OpenGL 就足够简单,并且不需要任何额外的库 afaik。
【讨论】:
关于 XNA 与 OpenGL 的选择(我知道有点离题,但因为它是较早提出的),在某些情况下使用 OpenGL 而不是 XNA(以及在其他 XNA 中而不是 OpenGL...)可能是有益的.
如果您打算使用 Mono 在 Linux 或 Mac 上运行应用程序,那么使用 OpenGL 可能是一个不错的选择。另外,我认为这并不广为人知,如果您的客户将在 Citrix 环境中运行您的应用程序,那么 DirectX/Direct3D/XNA 不会像 OpenGL 那样经济实惠。这样做的原因是,与需要专用虚拟服务器在硬件中运行的 DirectX/XNA 应用程序相比,OpenGL 应用程序可以共同托管在较少数量的服务器上(由于性能问题,单个服务器无法托管无限数量的应用程序实例)加速模式。存在其他要求,例如支持的显卡等,但我将继续讨论 XNA 与 OpenGL 的问题。 作为 IT 架构师、软件开发人员等,在选择 OpenGL 和 DirectX/XNA 之前必须考虑这一点...
附带说明的是,WebGL 基于 OpenGL ES3 afaik...
进一步说明,这些不是唯一的考虑因素,但它们可能会让某些人更容易选择......
【讨论】:
XNA 2.0 至少需要着色器 1.1 卡。虽然旧技术,但不是每个人都有。一些较新的笔记本电脑(根据我们的经验,配备英特尔显卡的东芝平板电脑)不支持着色器 1.1。 XNA 根本无法在这些机器上运行。
这对我们来说是一个重大问题,我们已转向 Tao 和 OpenGL。再加上 Tao,我们绑定了音频和 Lua 支持。
【讨论】: