文档章节

OpenTK学习笔记:C#的中开发OpenGL程序的4种开源封包库SharpGL、CsGL、OpenTK、Tao框架的简单对比

o
 osc_zoa3moe9
发布于 2019/12/07 12:23
字数 791
阅读 159
收藏 0

精选30+云产品,助力企业轻松上云!>>>

  最近要在C#的语言环境下开发OpenGL程序,参考了网上的博客论坛http://www.cnblogs.com/hanyonglu/archive/2012/06/12/2546581.html,总结如下:

       1.在C#中直接调用OpenGL函数比较费事,一般不直接使用;

       2.一般的开发方法是借助第三方开源库,比如SharpGL、CsGL、OpenTK、Tao框架等。其中Tao框架框架已经停止维护和更新了,可以被OpenTK替代,这里就不介绍了。

       下面比较一下SharpGL、CsGL、OpenTK这三种开发框架:

       1.SharpGL

       SharpGL的主页:http://sharpgl.codeplex.com/

 

     只需要在下载页面中下载SharpGL Visual Studio Extension文件,解压之后点击直接安装,就会在Visual Studio 2010中集成SharpGL的项目模板,如下图所示:

     在新建一个SharpGL Windows Forms Application工程后,将自动建立一个工程,可以直接运行,运行效果如下:

 

     对SharpGL的总结如下:

    (1)安装部署方便,可以非常容易的集成到Windows Forms和WPF中去使用;

    (2)存在内存泄露的问题,即使运行一个简单的程序,内存在不断增长,当增长到了一定时就不会有太多的增长,由于例程都有这样的问题,对于我们自己编写程序,应作适当考虑;

    (3)目前SharpGL已经支持到OpenGL4.2(http://sharpgl.codeplex.com/discussions/431042),在所有的第三方库中,其支持的OpenGL版本应该是最高的;

    (4)不支持Linux和Mac平台(http://sharpgl.codeplex.com/discussions/356490

 

      2. CsGL

     CsGL的主页:http://csgl.sourceforge.net/

     CsGL也是一个比较方便的库,运行时占用资源较少,响应速度较快。在下载了之后只需要将csgl.dll和csgl.native.dll这两个库拷贝至system32文件夹内即可。但在运行程序时,会报以下错误:

 

     解决的方法是将csgl.native.dll拷贝至程序运行路径下。

     对CsGL的总结如下:

     (1)是一个较为轻量级的库,运行时占用资源少,响应速度快;

     (2)官方已经至少十年没有更新,原因是官方认为CsGL已经足够稳定,能够支持大多数的程序了,不需要继续更新了(Development of CsGL has essentially stopped. CsGL has proven to be stable and good enough for most applications),正因为如此,CsGL支持的OpenGl版   本最低;

     (3)CsGl只支持32位的程序,无法支持64位,网上并没有提供64位的dll,这在很大程度上影响了其使用。

 

     3.OpenTK

  OpenTK的主页: https://opentk.net/  。原来的官方地址http://www.opentk.com/已经失效,不可访问。

  GitHub源码地址:https://github.com/opentk/opentk

 

     在下载了OpenTK的安装文件后,直接安装OpenTK就可以使用了。

     对OpenTK的总结如下:

     (1)安装部署方便,在程序中可以直接引用;

     (2)可以支持跨平台的开发,特别是支持OpenGL ES;

     (3)支持64位的Windows程序开发;

     (4)在资源占用和响应速度上虽然比不上CsGL,但是优于SharpGL;

     (5)对OpenGL的版本支持在3.3以上。

o
粉丝 1
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
C# OPENGL DEMO 旋转彩色立方体OpenGL, SharpGL

static double xrot = 0.0;    放置控件openGLControl1 添加事件openGLControl1_OpenGLDraw Form初始化 public Form1() 记得添加OpenGL, SharpGL包!!!记得添加OpenGL, SharpGL包!!!记......

osc_bx0x099p
2019/06/19
14
0
SharpGL学习笔记(七) OpenGL的变换总结

笔者接触OpenGL最大的困难是: 经常调试一份代码时, 屏幕漆黑一片, 也不知道结果对不对,不知道如何是好! 这其实就是关于OpenGL"变换"的基础概念没有掌握好, 以至于对"将三维体正确的显示在屏...

osc_zvpvvs59
06/01
5
0
SharpGL学习笔记(七) OpenGL的变换总结

笔者接触OpenGL最大的困难是: 经常调试一份代码时, 屏幕漆黑一片, 也不知道结果对不对,不知道如何是好! 这其实就是关于OpenGL"变换"的基础概念没有掌握好, 以至于对"将三维体正确的显示在屏...

猪悟能
2016/08/22
0
0
想问一下Opengl里面的VAO怎么制定顶点颜色/法向量等

Opengl的VAO怎么指定顶点的颜色? 下面是我错误的代码: 绘图 这是基于SharpGL的opengl移植代码,是看别人的c++下的opengl改的。看代码的时候我就很困惑,从来懂没有制定vbo[1]为颜色数组,系...

chihiro
2015/11/25
705
1
关于MFC与OpenGL结合绘图区域用鼠标来控制图形的移动的坑

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11773171.html   之前开发的导入多个模型,旋转,分别移动什么什么的,都是在纯OpenGL的环境下写,然后项目需求要界面了。...

osc_orozgpfx
2018/12/01
6
0

没有更多内容

加载失败,请刷新页面

加载更多

如何获取NuGet以安装/更新packages.config中的所有软件包?

问题: I have a solution with multiple projects in it. 我有一个包含多个项目的解决方案。 Most of the third party references are missing, yet there are packages.config file for e......

fyin1314
17分钟前
17
0
Xcode中的版本与版本 - Version vs build in Xcode

问题: I have an app that I developed with Xcode 3 and recently started editing with Xcode 4. In the target summary I have the iOS application target form with fields: identifie......

javail
47分钟前
14
0
如何在Python中将字典键作为列表返回? - How to return dictionary keys as a list in Python?

问题: In Python 2.7 , I could get dictionary keys , values , or items as a list: 在Python 2.7中 ,我可以将字典键 , 值或项作为列表获取: >>> newdict = {1:0, 2:0, 3:0}>>> newd......

技术盛宴
今天
17
0
2020世界人工智能大会开幕首日 百度与浦发银行达成战略合作

本文作者:y****n 7月9日,2020世界人工智能大会开幕首日,百度与浦发银行签署战略合作协议,将在人工智能、金融科技等多个领域进一步深化合作。双方将优势互补,实现人工智能技术在金融领域...

百度开发者中心
昨天
26
0
Java中C ++ Pair 的等价物是什么? - What is the equivalent of the C++ Pair in Java?

问题: Is there a good reason why there is no Pair<L,R> in Java? 有没有一个很好的理由说明Java中没有Pair<L,R> ? What would be the equivalent of this C++ construct? 这个C ++构造的......

富含淀粉
今天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部