在使用OpenGL时,C++优于C#有什么优势

jda*_*vis 7 c# c++ opengl

我开始对OpenGL感兴趣了,我试图找出在学习过程中使用哪种语言的最佳方向.我已经非常熟悉C#,从我读过的内容中,我可以利用Tao API与C#代码中的OpenGL接口.但是,在我看来,在我看来,那些真正专业的OpenGL开发人员也是C++程序员.

我很好奇在使用OpenGL中的3D图形时,C++可能比C#有什么优势.任何输入都会很棒,因为我完全是新手.

Nic*_*las 5

通过C#使用OpenGL有一些困难.

  1. 获取最新的SDK.Tao自2008年以来一直没有更新.OpenTK自2010年6月以来一直没有稳定版本.自2010年6月以来,OpenGL已经发布了两个版本.这是很多你无法从C#访问的功能.我不知道OpenTK的寂静有多稳定,但我一般不相信夜莺.使用C/C++,您可以获得要加载的任何函数指针.使用C#,您只能使用工具包提供的内容.

  2. 在C#中处理缓冲区对象可能会非常痛苦.是的,有一些方法可以将统一值数组上传到缓冲区对象.但是在C#中构建交错的顶点数据(其中不同的组件具有不同的类型)要困难得多.在C和C++中,您可以直接访问内存.所以很容易有一个3向量的浮点数后跟一个4向量的字节,所有存储在每个顶点16个字节.在C#中相当困难.

  3. 图形代码通常是性能更关键的代码区域之一.如果您正在制作像游戏这样的高性能渲染应用程序,通常需要C++提供的控件.很多C#的优秀功能在这里起作用.

使用C#提供的唯一真正优势是......它是C#.在某种程度上,你觉得你有优势,那么这是一个优势.

  • @UweKeim:怎么样?当然,您可以获得垃圾收集(对于CLI部分),您可以与CLR标准库进行通信.但是你没有得到C#的优秀语言功能.而且由于CLR标准库对于渲染器并不是非常有用,因此它并没有那么大的优势.您可能使用它的最多是与渲染器互操作,但这将使用直接C++编写.在这种情况下,您的渲染器不需要知道或关心它是从CLR调用的. (2认同)