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 plaincopy
- // Two OpenGL constants
- GL_TRIANGLES
- GLU_TESS_COMBINE
会被写为
[csharp] view plaincopy
- OpenGL.GL_TRIANGLES
- OpenGL.GLU_TESS_COMBINE
函数的名称和OpenGL中是一样的,只是‘“gl”前缀去除了,例如:
[csharp] view plaincopy
- // Set the line width and point size
- glLineWidth(3.0f);
- glPointSize(2.0f);
可能会写作:
[csharp] view plaincopy
- // Get a reference to the OpenGL object
- openGL gl = openGLCtrl1.OpenGL;
- gl.LineWidth(3.0f);
- gl.PointSize(2.0f);
另外,函数的参数类型后缀会去除,例如:
[csharp] view plaincopy
- // Output some vertices
- glVertex3f(2.0f,3.0f,4.0f);
- glVertex4f(2.0f,1.0f,10.0f,1.0f);
会被写作
[csharp] view plaincopy
- gl.Vertex3(2.0f,3.0f,4.0f);
- 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 plaincopy
- glMatrixMode(GL_MODEVIEW);
- glLoadIdenity();
- glMultMatrixf(N);
- glMultMatrixf(M);
- glMultMatrixf(L);
- glBegin(GL_POINTS);
- glVertex3f(v);
- glEnd();
窗口变化事件唤醒的函数其实有程序启动时也会被执行一次,所以这个函数至少会被执行一次。
环境光、散射光、镜面光
- 环境光(ambient light)是那些在环境中进行了充分的散射,无法分辨其方向的光,它似乎是来自所有的方向
- 散射光(diffuse light)来自某个方向,当它撞击表面时,它会均匀地向所有方向发射。
- 镜面光(specular light)来自一个特定的方向,并且倾向于从表面向某个特定的方向反射
最后欢迎大家访问我的个人网站: 1024s