OpenTK学习笔记:C#的中开发OpenGL程序的4种开源封包库SharpGL、CsGL、OpenTK、Tao框架的简单对比
最近要在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以上。
OpenTK学习笔记:C#的中开发OpenGL程序的4种开源封包库SharpGL、CsGL、OpenTK、Tao框架的简单对比的更多相关文章
- OPENGL学习【一】VS2008开发OPENGL程序开发环境搭建
1.VS2008工具自行在网上下载安装,现只提供VS2008开发工具中配置OPENGL环境的详细步骤.开发包及编译工具会在下方一并放出链接. 2.打开CMake的工具,主要的配置信息如下,按照数字顺序 ...
- Android:日常学习笔记(8)———探究UI开发(3)
Android:日常学习笔记(8)———探究UI开发(3) 详解四种基本布局 前言 布局定义用户界面的视觉结构,如Activity或应用小部件的 UI.您可以通过两种方式声明布局: 在 XML 中声明 ...
- VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式
原文:VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式 Excel包含很多公式,如数学.日期.文本.逻辑等公式,非常方便,可以灵活快捷的对数据进行处理,达到我们想要的效果.Exce ...
- Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建
Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...
- springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定
springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...
- Android:日常学习笔记(8)———探究UI开发(5)
Android:日常学习笔记(8)———探究UI开发(5) ListView控件的使用 ListView概述 A view that shows items in a vertically scrol ...
- Android:日常学习笔记(7)———探究UI开发(4)
Android:日常学习笔记(7)———探究UI开发(4) UI概述 View 和 ViewGrou Android 应用中的所有用户界面元素都是使用 View 和 ViewGroup 对象构建而成 ...
- Android:日常学习笔记(8)———探究UI开发(2)
Android:日常学习笔记(8)———探究UI开发(2) 对话框 说明: 对话框是提示用户作出决定或输入额外信息的小窗口. 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件. 提示 ...
- Android:日常学习笔记(7)———探究UI开发(1)
Android:日常学习笔记(7)———探究UI开发(1) 常用控件的使用方法 TextView 说明:TextView是安卓中最为简单的一个控件,常用来在界面上显示一段文本信息. 代码: <T ...
随机推荐
- 【转载】自定义View,有这一篇就够了
为了扫除学习中的忙点,尽可能多的覆盖Android知识的边边角角,决定对自定义View做一个稍微全面一点的使用方法总结,在内容上面并没有什么独特的地方,其他大神们博客上面基本上都有讲这方面的内容,如果 ...
- web服务器-apache
一.apache详解 1. 概述 apache是世界上使用排名第一的web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的web服务器端软件之一.它快 ...
- zabbix--自定义监控项vsftpd
Zabbix 自定义监控项之监控 vsftpd zabbix 提供了很多监控选择,功能丰富,我们还可以根据自定义来监控想要监控一些日常的服务等. 说明: 此处我们通过监控 ftp (自定义命令),实现 ...
- (三)Kubernetes 快速入门
Kubernetes的核心对象 API Server提供了RESTful风格的编程接口,其管理的资源是Kubernetes API中的端点,用于存储某种API对象的集合,例如,内置Pod资源是包含了所 ...
- 随笔记录--Array类型
前言:除了Object类型之外,Array类型恐怕是ECMAScript中最常用的类型了.而且,ECMAScript中数组与其他多数语言中的数组有很大差别,ECMAScript数组中的每一项可以保存任 ...
- CString写的web server
socket通信机制 文件加载机制 手抄代码 test\\2017
- 配置VScode c语言环境
vscode 提示 <sys/socket.h>找不到, 原来是不同平台上,头文件不一样. 参考:https://blog.csdn.net/qq_28581077/article/det ...
- CF300D Painting Square
Painting Square https://codeforces.com/problemset/problem/300/D 给了一个理解起来较复杂但是本质上很简单的分形. 题解 很显然,只有边长为 ...
- NYOJ104-最大和-(前缀和)
题意:给一个矩阵,每个元素有正有负,求最大矩阵和. 解题: (1)对原矩阵a用前缀和处理,处理变成矩阵sum,sum[i][j]表示从左上角为a[1][1]到右下角a[i][j]的全部元素和. 矩阵必 ...
- 解决:C++ 中 main函数 wmain函数 _tmain函数 WinMain函数 wWInMain函数 _tWinMain函数的区别
main函数与WinMain函数区别: 前者为控制台程序入口主函数,后者为Windows API窗体程序入口函数,在windef.h文件中定义. main函数与wmain函数 | WinMain函数与 ...