OpenGL结合C#进行绘图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OpenGL结合C#进⾏绘图
本⼈对OpenGL产⽣了浓厚的兴趣,⼜想学习⼀下C#这个语⾔,就想两个⼀起学习⼀下,就正好发现这篇⽂章,结合起来学习。
路漫漫其修远兮,吾将上下⽽求索!!
OpenGL简介
OpenGL作为⼀种图形学编程接⼝已经⾮常流⾏,虽然在⼤型游戏⽅⾯DirectX有⼀定的市场占有率,但由于OpenGL的开放性,可移植性等优点,OpenGL已经成了⼀种图形学⽅⾯的标准。
(1)Python的 pyOpenGL;
(2)C#的OpenTK(包括OpenAL, OpenGL, OpenCL); tao C#绑定;
(3)JavaScript:WebGL
等等。
这样我们就可以利⽤⾃⼰熟悉的语⾔来编写OpenGL的图形程序了。
(值得注意的是:每个不同的绑定基本都包括了 gl 库[OpenGL的核⼼函数库], glu库[实⽤函数库], glut库[实⽤⼯具箱] 等等)OpenGL support libraries
GLU – Some additional functions for OpenGL programs.
GLUT – The OpenGL utility toolkit. Defunct.
freeglut – Open source alternative to GLUT
GLUI – a GUI toolkit made with GLUT
GLFW - A modern alternative to GLUT and FreeGLUT.
GLee – The OpenGL Easy Extension library.
GLEW – The OpenGL Extension Wrangler Library.
GLM – C++ mathematics toolkit for OpenGL based on the GLSL specification.
JOGL – Java bindings for OpenGL API.
本⼈常⽤的语⾔是C#和Python,最后选了C#的tao作为编程环境。
1. 如何配置绑定:
然后安装到⾃⼰熟悉的⽬录。
2. 如何导⼊所需的库:
新建C#控制台项⽬,导⼊刚才安装的程序⽬录 bin下的: Tao.OpenGL.dll, Tao.FreeGlut.dll, Tao.Platform.Windows.dll.
(项⽬--添加引⽤--浏览--bin)
然后在 .cs ⽂件开头加⼊:
using Tao.OpenGl;
using Tao.FreeGlut;
using Tao.Platform.Windows;
3. 编程⽰例:
写⼀个简单的程序:
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tao.OpenGl;
using Tao.FreeGlut;
using Tao.Platform.Windows;
class Program
{
static string title = "⽤ glRecti() 画矩形";
static void myInit()
{
// 设置属性
Gl.glClearColor(1.0f, 0.0f, 0.0f, 0); // 红⾊背景
Gl.glColor3f(0.0f, 1.0f, 0.0f); // ⽤绿⾊绘制图形
// 建⽴视图
Gl.glMatrixMode(Gl.GL_PROJECTION);
//Gl.glMatrixMode(Gl.GL_MODELVIEW);
Gl.glLoadIdentity();
Glu.gluOrtho2D(0.0, 600.0, 0.0, 600.0);
}
static void display()
{
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
Gl.glRecti(0, 0, 500, 120);
Gl.glFlush();//glFlush()是OpenGL中的函数,⽤于强制刷新缓冲,保证绘图命令将被执⾏,⽽不是存储在缓冲区中等待其他的OpenGL命令
}
static void Main(string[] args)
{
Glut.glutInit();
Glut.glutInitDisplayMode(Glut.GLUT_RGBA | Glut.GLUT_SINGLE);//函数功能为设置初始显⽰模式
Glut.glutInitWindowPosition(400, 100);
Glut.glutInitWindowSize(600, 600);
Glut.glutCreateWindow(title);
myInit();
Glut.glutDisplayFunc(display);
Glut.glutMainLoop();
//Console.ReadKey();//这句我在运⾏时出现问题,⼲脆给注释掉了
}
}
运⾏后发现有问题,缺少 FreeGlut.dll ,怎么回事?不是已经把库导⼊了吗? Goolge⼀下,还需要FreeGlut.dll ⽂件。
下载:freeglut 2.8.0 MSVC Package,可能要⽐这个新。
然后将压缩包中 bin 下的 freeglut.dll 复制到 windows⽬录下。
运⾏,⼀切OK。