Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将OpenGl与C#结合使用?_C#_Opengl - Fatal编程技术网

将OpenGl与C#结合使用?

将OpenGl与C#结合使用?,c#,opengl,C#,Opengl,是否有针对C#的免费OpenGL支持库?如果是,我应该使用哪一个,在哪里可以找到示例项目 C#是否为OpenGL提供类?您希望这些支持库做什么?仅仅使用C#中的OpenGL就足够简单,而且不需要任何额外的库。应该是一个不错的框架 从他们的网站: NET的Tao框架是一个绑定集合,用于简化 跨平台媒体应用开发 NET和Mono平台 我还建议您选择。但还有一点需要注意: 请看以下教程: XNA 2.0至少需要一张着色器1.1卡。虽然是老技术,但不是每个人都有。一些较新的笔记本电脑(根据我们的经验,采

是否有针对C#的免费OpenGL支持库?如果是,我应该使用哪一个,在哪里可以找到示例项目


C#是否为OpenGL提供类?

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

应该是一个不错的框架

从他们的网站:

NET的Tao框架是一个绑定集合,用于简化 跨平台媒体应用开发 NET和Mono平台


我还建议您选择。但还有一点需要注意:

请看以下教程:
XNA 2.0至少需要一张着色器1.1卡。虽然是老技术,但不是每个人都有。一些较新的笔记本电脑(根据我们的经验,采用英特尔图形的东芝平板电脑)不支持着色器1.1。XNA根本不会在这些机器上运行


这对我们来说是一个重要的问题,我们已经转向Tao和OpenGL。加上Tao,我们有音频和Lua支持的绑定。

我认为@korona的意思是,因为它只是一个C API,您可以直接从C#使用它,只需输入大量如下内容:

[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
不幸的是,对于调用的每一个OpenGL函数,您都需要这样做,这基本上就是Tao为您所做的。

是对Tao API的改进,因为它使用惯用的C风格,带有重载、强类型枚举、异常和标准.NET类型:

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维护者已经成功,其未来仍不确定。论坛上充斥着垃圾邮件。维护人员建议转向MonoGame或SDL2


2020年6月30日更新:OpenTK已经有了新的维护人员一段时间了,并且有一个活跃的discord社区。因此,前面关于使用另一个库的建议并不一定正确。

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

您可以在不使用包装器的情况下使用OpenGL,并在C#中本机使用它。 正如Jeff Mc所说,您必须导入DllImport所需的所有函数

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

我已经在VS2012中创建了一个示例C#项目,几乎是在Windows box上运行OpenGL所需的最低限度。它只会把窗户漆成蓝色,但它应该足以让你开始。有关示例,请访问。查看底部的无包装器示例。

关于XNA与OpenGL的选择(我知道这有点离题,但因为它是在前面提到的),在一些情况下,使用OpenGL而不是XNA(以及其他XNA而不是OpenGL…)可能是有益的

如果您打算使用Mono在Linux或Mac上运行应用程序,那么使用OpenGL可能是一个不错的选择。此外,我认为这一点还不太广为人知,如果您的客户打算在Citrix环境中运行您的应用程序,那么DirectX/Direct3D/XNA将不会像OpenGL那样经济。原因是OpenGL应用程序可以在数量较少的服务器上共同托管(由于性能问题,单个服务器无法承载无限多的应用程序实例),而DirectX/XNA应用程序需要专用虚拟服务器以硬件加速模式运行。其他需求也存在,比如支持的图形卡等,但我将继续讨论XNA vs OpenGL的问题。 作为IT架构师、软件开发人员等,在选择OpenGL和DirectX/XNA之前必须考虑这一点

需要注意的是,WebGL是基于OpenGL ES3 afaik


进一步说明,这些不是唯一的考虑因素,但它们可能会使某些人更容易选择…

在什么名称空间中可以找到这些类?OpenGL不是.NET的一部分,从第4版开始。0@MegaByte它们必须通过平台调用来访问。我不知道Tao在不久前的页面下降时发生了什么。Tao的新网站是:Tao似乎是一个移动的目标。我更新了链接,因为它也从mono现在转移到sourceforge。哇,2005年11月。。。OpenGL变化不大吗?@JonHarrop yeah看起来他们现在还没有使用github页面在那里设置重定向,在Linux(使用mono)上你会怎么做?基本上完全一样,Tao的新网站是:我认为这些功能不是很有代表性,因为它们都已弃用,并已从OpenGl核心配置文件中删除。确实,这些函数已从核心配置文件中删除。但这些论点仍然有效。“OpenTK是对Tao API的改进,因为它使用了惯用的C#风格,带有重载、强类型枚举、异常和标准.NET类型”链接的网站现在对本文无效。另外,还有一个由OpenTK衍生而来的Silk.NET,它做了许多原始的事情,也做了一些新的绑定:你的链接死了,请分享你的项目。谢谢。我知道这是一条非常古老的线索,但你可能会感兴趣