最近要在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框架的简单对比的更多相关文章

  1. OPENGL学习【一】VS2008开发OPENGL程序开发环境搭建

    1.VS2008工具自行在网上下载安装,现只提供VS2008开发工具中配置OPENGL环境的详细步骤.开发包及编译工具会在下方一并放出链接. 2.打开CMake的工具,主要的配置信息如下,按照数字顺序 ...

  2. Android:日常学习笔记(8)———探究UI开发(3)

    Android:日常学习笔记(8)———探究UI开发(3) 详解四种基本布局 前言 布局定义用户界面的视觉结构,如Activity或应用小部件的 UI.您可以通过两种方式声明布局: 在 XML 中声明 ...

  3. VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式

    原文:VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式 Excel包含很多公式,如数学.日期.文本.逻辑等公式,非常方便,可以灵活快捷的对数据进行处理,达到我们想要的效果.Exce ...

  4. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  5. springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定

    springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...

  6. Android:日常学习笔记(8)———探究UI开发(5)

    Android:日常学习笔记(8)———探究UI开发(5) ListView控件的使用 ListView概述 A view that shows items in a vertically scrol ...

  7. Android:日常学习笔记(7)———探究UI开发(4)

    Android:日常学习笔记(7)———探究UI开发(4) UI概述  View 和 ViewGrou Android 应用中的所有用户界面元素都是使用 View 和 ViewGroup 对象构建而成 ...

  8. Android:日常学习笔记(8)———探究UI开发(2)

    Android:日常学习笔记(8)———探究UI开发(2) 对话框 说明: 对话框是提示用户作出决定或输入额外信息的小窗口. 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件. 提示 ...

  9. Android:日常学习笔记(7)———探究UI开发(1)

    Android:日常学习笔记(7)———探究UI开发(1) 常用控件的使用方法 TextView 说明:TextView是安卓中最为简单的一个控件,常用来在界面上显示一段文本信息. 代码: <T ...

随机推荐

  1. JavaScript设计模式与开发实践随笔(一)

    编程语言按照数据类型大体可以分为两类,一类是静态类型语言,另一类是动态类型语言. 静态类型语言在编译时便已确定变量的类型,而动态类型语言的变量类型要到程序运行的时 候,待变量被赋予某个值之后,才会具有 ...

  2. 从 Vue 的视角学 React(三)—— 事件处理

    如果要处理某个元素的 click 事件,原生 js 可以直接为该元素添加一个 onclick 函数 Vue 封装了 v-on 指令,可以简化为 @click 并添加相应的函数 React 的开发思想是 ...

  3. Windows - CMD窗口UTF8编码乱码问题的解决!

    问题描述    用MS-DOC打开 UTF-8 的文件时, 显示乱码问题根源    CMD默认是Windows系统默认编码(GBK),    用GBK格式来解码UTF-8的文件当然会出现乱码.解决方案 ...

  4. 06-Vue路由

    什么是路由 对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源: 对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有 ...

  5. postgresql源代码结构

    转载学习: 德哥培训! 源码下载: https://www.postgresql.org/ftp/source/ 1.postgressql源码目录结构 2.src目录结构

  6. Oracle使用expdp/impdp迁移数据

    Oracle使用expdp/impdp迁移数据 1.#以下步骤在开发库执行(expdp导出) 一.创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建. sqlplus / ...

  7. 微博api接口登陆,获取信息,分享微博

    import json from datetime import datetime import MySQLdb import requests from flask import Flask, re ...

  8. 用 gradle 运行 spring boot 项目

    用 gradle 运行 spring boot 项目(网页中的第6章:https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/gradle-plug ...

  9. node 文件上传

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  10. 欢迎访问阿里云Go Module代理仓库服务

    简介 go module公共代理仓库,代理并缓存go模块.你可以利用该代理来避免DNS污染导致的模块拉取缓慢或失败的问题,加速你的构建. 地址 https://mirrors.aliyun.com/g ...