SharpGL

SharpGL知识:http://download.csdn.net/detail/chs007chs/7299689

可以从如下地址中下载到SharpGL,可用于vs2012.,具体网址:https://github.com/dwmkerr/sharpgl/releases

也可以从csdn中下载到vs2012及vs2010的扩展包


在创建一个SharpGL winform程序后,出现了一问题:Extension function glGenFramebuffersEXT not supported.
解决方法参考

主要是显卡的驱动不支持函数glGenFramebufferEXT,可以修改OpenGL control的属性'RenderContextProvider",将其从FBO(使用glGenFramebuffersEXT进行硬件加速)改变为‘DIBSection’(这个可以适应任何显卡)。


命名规则:

SharpGL的常量和OpenGL常量名称是一样的,并且是OpenGL类的常量成员。如

[csharp]  view plain copy
  1. // Two OpenGL constants  
  2. GL_TRIANGLES  
  3. GLU_TESS_COMBINE  
会被写为
[csharp]  view plain copy
  1. OpenGL.GL_TRIANGLES  
  2. OpenGL.GLU_TESS_COMBINE  
函数的名称和OpenGL中是一样的,只是‘“gl”前缀去除了,例如:
[csharp]  view plain copy
  1. // Set the line width and point size  
  2. glLineWidth(3.0f);  
  3. glPointSize(2.0f);  

可能会写作:

[csharp]  view plain copy
  1. // Get a reference to the OpenGL object  
  2. openGL gl  = openGLCtrl1.OpenGL;  
  3. gl.LineWidth(3.0f);  
  4. gl.PointSize(2.0f);  

另外,函数的参数类型后缀会去除,例如:
[csharp]  view plain copy
  1. // Output some vertices  
  2. glVertex3f(2.0f,3.0f,4.0f);  
  3. glVertex4f(2.0f,1.0f,10.0f,1.0f);  

会被写作
[csharp]  view plain copy
  1. gl.Vertex3(2.0f,3.0f,4.0f);  
  2. gl.Vertex4(2.0f,1.0f,10.0f,1.0f);  


OpenGL的基础知识

 推荐Nehe教程,非常适合入门,也可以从CSDNhttp://download.csdn.net/detail/chs007chs/7299689下载到教程,或者Nehe的网址。

这里推荐几个网址:

http://www.opengl.org

http://nehe.gamedev.net/

void glMatrixMode(GLenum  mode);

指定对哪个矩阵栈进行后续的矩阵操作,GL_MODEVIEW是对模型观矩阵,它也是初始值;GL_PROJECTION是对投影矩阵。

如果有一个三维点V,矩阵N、M、L,要进行N*M*L*V的矩阵操作(矩阵相乘满足结合律),那么它们在代码中出现的顺序也是自上而下的:

[csharp]  view plain copy
  1. glMatrixMode(GL_MODEVIEW);  
  2. glLoadIdenity();  
  3. glMultMatrixf(N);  
  4. glMultMatrixf(M);  
  5. glMultMatrixf(L);  
  6. glBegin(GL_POINTS);  
  7. glVertex3f(v);  
  8. glEnd();  

窗口变化事件唤醒的函数其实有程序启动时也会被执行一次,所以这个函数至少会被执行一次。

环境光、散射光、镜面光

  • 环境光(ambient light)是那些在环境中进行了充分的散射,无法分辨其方向的光,它似乎是来自所有的方向
  • 散射光(diffuse light)来自某个方向,当它撞击表面时,它会均匀地向所有方向发射。
  • 镜面光(specular light)来自一个特定的方向,并且倾向于从表面向某个特定的方向反射

你可能感兴趣的:(SharpGL)