在C#中使用OpenGl?

Meg*_*yte 117 c# opengl

C#有免费的OpenGL支持库吗?如果是这样,我使用哪一个,在哪里可以找到样本项目?

C#是否为OpenGL提供类?

小智 126

OpenTK是对Tao API的改进,因为它使用惯用的C#样式,包括重载,强类型枚举,异常和标准.NET类型:

GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
Run Code Online (Sandbox Code Playgroud)

与仅反映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
Run Code Online (Sandbox Code Playgroud)

这使得移植更难,但使用起来非常好.

作为奖励,它提供字体渲染,纹理加载,输入处理,音频,数学......

更新18.1.2016:今天,OpenTK维护者已经离开了项目,使其未来不确定.论坛充斥着垃圾邮件.维护者建议转移到MonoGame或SDL2#.

  • 没错,这些功能将从核心配置文件中删除.但这些论点仍然有效."OpenTK是对Tao API的改进,因为它使用惯用的C#样式,包含重载,强类型枚举,异常和标准.NET类型" (6认同)
  • 我不认为这些功能非常具有代表性,因为它们都已弃用并从OpenGl核心配置文件中删除. (5认同)

Jef*_* Mc 16

我认为@korona的意思是因为它只是一个C API,你可以直接使用C#直接消费它,如下所示:

[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
Run Code Online (Sandbox Code Playgroud)

不幸的是,您需要为您调用的每个OpenGL函数执行此操作,这基本上就是Tao为您所做的事情.


Óla*_*age 15

应该是一个很好的框架.

从他们的网站:

Tao Framework for .NET是一组绑定,用于利用.NET和Mono平台促进跨平台媒体应用程序开发.


dha*_*ech 9

SharpGL是一个允许您在Windows窗体或WPF应用程序中使用OpenGL的项目.


Oli*_*ver 7

我也会推荐Tao Framework.但还有一点需要注意:

看看这些教程:http: //www.taumuon.co.uk/jabuka/


小智 7

你可以在没有包装器的情况下使用OpenGL,并在C#中原生使用它.正如Jeff Mc所说,你必须使用DllImport导入你需要的所有功能.

他遗漏的是在使用任何OpenGL函数之前必须创建上下文.这并不难,但还有其他一些不那么直观的DllImports需要完成.

我在VS2012中创建了一个示例C#项目,几乎是在Windows上运行OpenGL所需的最低限度.它只将窗口涂成蓝色,但它应该足以让你开始.该示例可以在http://www.glinos-labs.org/?q=programming-opengl-csharp找到.在底部查找No Wrapper示例.

  • 你的链接已经死了,请你分享你的项目.谢谢. (5认同)

kor*_*ona 4

您希望这些支持库做什么?仅仅从 C# 使用 OpenGL 就足够简单了,而且不需要任何额外的库。

  • 自 4.0 版本起,OpenGL 不再是 .NET 的一部分 (4认同)
  • @MegaByte 它们必须通过平台调用来访问。 (3认同)