在C#中使用OpenGl?
C#有免费的OpenGL支持库吗? 如果是这样,我使用哪一个,哪里可以find示例项目?
C#提供OpenGL的类吗?
OpenTK是Tao API的一个改进,因为它使用重载,强types枚举,exception和标准.NETtypes的惯用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
这使得更难的移植,但使用非常好。
作为奖励,它提供了字体渲染,纹理加载,input处理,audio,math…
更新18.1.2016 :今天,OpenTK维护者已经离开了这个项目 ,让它的未来不确定。 论坛充斥着垃圾邮件。 维护者build议移动到MonoGame或SDL2#。
我认为@korona意味着什么,因为它只是一个C API,你可以从C#中直接使用它,像这样大量的打字:
[DllImport("opengl32")] public static extern void glVertex3f(float x, float y, float z);
不幸的是你需要为你所调用的每一个OpenGL函数做这个工作,基本上是Tao为你做的。
陶应该是一个很好的框架。
从他们的网站:
Tao Framework for .NET是绑定的集合,利用.NET和Mono平台来促进跨平台媒体应用程序的开发。
SharpGL是一个让您在Windows窗体或WPF应用程序中使用OpenGL的项目。
我也会推荐Tao框架 。 但是还有一个附注:
看看这些教程: http : //www.taumuon.co.uk/jabuka/
你可以使用OpenGL而不使用包装,并在C#中使用它本身。 就像Jeff Mc说的那样,你将不得不用DllImport导入你需要的所有function。
他遗漏的是在使用任何OpenGL函数之前必须创build上下文。 这并不难,但是其他不那么直观的DllImport需要完成。
我已经在VS2012中创build了一个示例C#项目,几乎没有必要获得在Windows上运行的OpenGL。 它只会把窗口画成蓝色,但它应该足以让你开始。 这个例子可以在http://www.glinos-labs.org/?q=programming-opengl-sharpfind。; 在底部寻找无包装的例子。
你想要这些支持库做什么? 从C#使用OpenGL非常简单,不需要额外的库afaik。
关于(我知道的有点偏离主题,但是因为它早就被提出)XNA与OpenGL的select,在几个使用OpenGL而不是XNA(以及在其他XNA而不是OpenGL中)的情况下可能是有益的。
如果您要使用Mono在Linux或Mac上运行应用程序,那么使用OpenGL可能是一个不错的select。 另外,我认为,如果您有客户将在Citrix环境中运行您的应用程序,那么DirectX / Direct3D / XNA将不会像OpenGL那样经济实惠。 原因在于OpenGL应用程序可以共同托pipe在较less数量的服务器上(由于性能问题,单个服务器无法托pipe无数个应用程序实例)比需要专用虚拟服务器在硬件中运行的DirectX / XNA应用程序加速模式。 其他要求存在像支持graphics卡等,但我会保持XNA与OpenGL的问题。 作为一名IT架构师,软件开发人员等,在selectOpenGL和DirectX / XNA之前,必须考虑这一点。
WebGL是基于OpenGL ES3 afaik …
作为进一步的说明,这些不是唯一的考虑因素,但它们可能会使select更容易一些…
XNA 2.0需要至less一个着色器1.1卡。 虽然老技术,不是每个人都有。 一些较新的笔记本电脑(在我们的经验与英特尔graphics东芝平板电脑)没有着色器1.1的支持。 XNA不会在这些机器上运行。
这对我们来说是一个重要的问题,我们已经转向了Tao和OpenGL。 加上Tao,我们已经绑定了audio和Lua支持。