CSharpGL(17)重構CSharpGL
CSharpGL用起來我自己都覺得繁瑣了,這是到了重構的時候。
下載
CSharpGL已在GitHub開源,歡迎對OpenGL有興趣的同學加入(https://github.com/bitzhuwei/CSharpGL)
核心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有興趣的同學關注(https://github.com/bitzhuwei/CSharpGL)
文章列表
留言列表