当使用OpenGL时,c++比c#有哪些优势?
本文关键字:OpenGL c++ | 更新日期: 2023-09-27 18:15:17
我开始对OpenGL学习感兴趣,我正试图找出在学习过程中使用哪种语言的最佳方向。我已经非常熟悉c#,从我所读到的,我可以利用Tao API从c#代码与OpenGL接口。然而,从我读到的东西来看,那些真正专业的OpenGL开发人员似乎也是c++程序员。
我很好奇在OpenGL中处理3D图形时,c++比c#有什么优势。任何输入都将是伟大的,因为我是一个完全的新手。
通过c#使用OpenGL有一些困难。
-
获取最新的SDK。Tao从2008年开始就没有更新过。OpenTK自2010年6月以来就没有发布过稳定版本。OpenGL自2010年6月以来已经发布了两个版本。这是c#无法访问的大量功能。我不知道OpenTK的nightlies有多稳定,但我通常不相信nightlies。使用C/c++,您可以获得想要加载的任何函数指针。使用c#,你只能使用你的工具包提供的东西。
-
在c#中处理缓冲区对象是相当痛苦的。是的,有一些方法可以将统一值的数组上传到缓冲对象。但是在c#中构建交错顶点数据(不同的组件有不同的类型)要困难得多。在C和c++中,可以直接访问内存。所以很容易有一个3向量的浮点数,后面跟着一个4向量的字节,每个顶点存储16字节。
-
图形代码通常是代码中性能更为关键的领域之一。如果您正在制作高性能渲染应用程序(如游戏),则通常需要c++提供的控件。c#的许多优秀特性在这里都与之背道而驰。
使用c#提供的唯一真正的优势是…c#。如果你觉得某件事对你有利,那么它就是一种优势。
与您最直接相关的优势是使用C编写的示例代码的教程的优势,c++编译器将很乐意接受。
最广泛适用的优点是可移植性:c#是微软的婴儿&在非微软平台上对该语言的支持充其量是粗略的。维基百科目前声称c#的最新ISO标准是2.0,而微软已经发布了4.0,并且已经在开发5.0!