C#的OpenGL开发

用第三方插件是CSGL,其官方网站为:http://csgl.sourceforge.net/
关键是使用其提供的两个DLL:csgl.dll 和 csgl.native.dll,csgl.dll是开发使用的,在一个C#工程中,用“项目”->“添加引用”->“浏览”找到 csgl.dll 引用。然后把两个dll都放到程序目录在运行时使用。
在需要使用OpenGL函数的cs文件的using声明中,加上:using CsGL.OpenGL命名空间,就可以使用静态GL类调用OpenGL函数和变量了,比如GL.glRotatef
而对于显示OpenGL窗口,需要自己建立一个从CsGL.OpenGL.OpenGLControl类继承的控制类,并至少做以下重构:

protected override void OnCreateControl()
{
GL.glClearDepth(1.0f);
GL.glDepthFunc(GL.GL_LEQUAL);
GL.glEnable( GL.GL_DEPTH_TEST );
}

protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);

Size s = Size;
double aspect_ratio = (double)s.Width /(double) s.Height;
ViewCtrl.VIEWSIZE_WIDTH = s.Width;
ViewCtrl.VIEWSIZE_HEIGHT = s.Height;
GL.glMatrixMode(GL.GL_PROJECTION);
GL.glLoadIdentity();
GL.gluPerspective(63.0f, aspect_ratio, 1f, 4000.0f);

GL.glMatrixMode(GL.GL_MODELVIEW);
GL.glLoadIdentity();
}

public override void glDraw()
{
GL.glClearColor(0.1f,0.1f,0.2f,1.0f);
GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
GL.glLoadIdentity();
}

(在glDraw()中动态绘制想画的东西)

然后捆绑到一个Form窗体上显示就可以:
如:声明:public class csglViewer : OpenGLControl
在窗体中实例化:csglViewer myview;
myview = new csglViewer();
myview.dock = DockStyle.Fill;
Form1.Controls.Add(myview);

OK~其实C#里面使用OpenGL跟C++没有太大区别,OpenGL毕竟是所谓平台无关的,那些函数基本上都是一致的。重点其实就是学OpenGL而不是什么语言的OpenGL,只要把接口(或者可以说显示OpenGL画面的窗口)找到就行了

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1791625
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值