博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSharpGL(17)重构CSharpGL
阅读量:6950 次
发布时间:2019-06-27

本文共 1234 字,大约阅读时间需要 4 分钟。

CSharpGL(17)重构CSharpGL

CSharpGL用起来我自己都觉得繁琐了,这是到了重构的时候。

下载

CSharpGL已在GitHub开源,欢迎对OpenGL有兴趣的同学加入()

核心N合一

为了解耦,我把CSharpGL核心拆分为5个DLL。然后发现这只会带来麻烦。用的时候要引用多个DLL,开发的时候也没有益处。于是全部N合一,成为一个CSharpGL.dll。

现在的版本内容如上图所示。

Demo:GLCanvas

这个demo每秒随机更换一个背景色。演示了如何使用GLCanvas(drag-drop即可),清晰展示了GLCanvas最基本的渲染功能。

 

Demo:北斗七星(Big Dipper)

这个demo演示了如何用CSharpGL进行modern rendering。

北斗七星模型的顶点位置如下:

1 [0]    {-2.5000, +1.0000, +0.0000}2 [1]    {-1.5000, +1.0000, +0.0000}3 [2]    {-0.5000, +0.5000, +0.0000}4 [3]    {+0.5000, +0.2500, +0.0000}5 [4]    {+1.0000, -1.0000, +0.0000}6 [5]    {+2.0000, -1.0000, +0.0000}7 [6]    {+2.5000, +0.0000, +0.0000}

北斗七星模型的顶点颜色是由红色逐渐过度到紫色。

旋转、缩放

通过camera和satelliteRotator实现旋转和缩放模型的功能。

拾取

鼠标移动到北斗七星模型上,会在BulletinBoard窗口上显示出拾取到的图元。

GLSwitch

有时候你需要用GL.LineWidth();设置线宽度;有时候需要用GL.PointSize();设置点的大小。CSharpGL提供GLSwitch对象,可以为各个IRenderable对象动态增删这些功能。

北斗七星Demo里,你可以在PropertyGrid窗口动态增删GLSwitch。

UniformVariables

CSharpGL提供类似GLSwitch的可视化编辑方式,来动态增删改shader中的uniform变量。

DrawMode

还可以动态修改渲染模式。

其他类型就不贴图了。

另外,不同的DrawMode下,拾取到的图元也是不同的。

Demo:Geometry Shader(EmitNormalLine)

用geometry shader自动渲染出模型顶点的法线是目前我找到的geometry Shader的最好的应用。

下图中的白色针状就是各个顶点的法线。

Teapot

Sphere

Cube

 

 

总结

原CSharpGL的其他功能(UI、3ds解析器、TTF2Bmp、CSSL等),我将逐步加入新CSharpGL。

欢迎对OpenGL有兴趣的同学关注()

转载地址:http://lwuil.baihongyu.com/

你可能感兴趣的文章
python函数式编程-装饰器
查看>>
机器学习重塑供应链管理的10个途径
查看>>
前端:用css打造炫酷3d特效- css3d立方体
查看>>
集成Android SlidingMenu(SlideMenu)
查看>>
使用Cargo入门rust语言
查看>>
hibernate笔记--组合主键映射方法
查看>>
jQuery 前后端分离项目总结
查看>>
Python使用Mysql官方驱动(取出dict类型的数据)
查看>>
数据网格组件 Handsontable 不再开源,采用自拟的非商业许可证
查看>>
PostgreSQL 全文检索 - 词频统计
查看>>
这个“达芬奇”不一般!它是美国医生的好帮手
查看>>
Java中将List转成逗号数组的方案
查看>>
一如此前的回应,王劲将景驰科技总部搬到了广州
查看>>
Docker EE 2.0 版本震撼来袭,全新特性先睹为快(附资源地址)
查看>>
5月上海见-国际产学研专家集结第六届全球云计算大会中国站
查看>>
量子计算会带来什么样的革命?
查看>>
除了停电之外,今年的CES还有这些“意外”……
查看>>
多线程3,线程池封装库
查看>>
2016中国“互联网+”创业创新大赛(华北+东北)赛区决赛成功举办 5支优胜团队晋级海口总决赛...
查看>>
django 1.8 官方文档翻译: 1-1-2 快速安装指南
查看>>