1、opengl运行模式及opengl规范
运行模式:核心模式与立即渲染模式(弃用)
由于OpenGL的大多数实现都是由显卡厂商编写的,当产生一个bug时通常可以通过升级显卡驱动来解决。这些驱动会包括你的显卡能支持的最新版本的OpenGL,这也是为什么总是建议你偶尔更新一下显卡驱动。
2.开发库以及查看opengl版本
开发库: GLUT,SDL,SFML和
GLFW
查看显卡支持opengl版本: glxinfo(linux)和 OpenGL Extension Viewer(windows)
http://download.cnet.com/OpenGL-Extensions-Viewer/3000-18487_4-34442.html
3、设置视窗大小以及清空颜色
glViewport(0, 0, 800, 600);
在我们开始渲染之前还有一件重要的事情要做,我们必须告诉OpenGL渲染窗口的尺寸大小,即视口(Viewport),这样OpenGL才知道怎样根据窗口大小显示数据和坐标。我们可以通过调用glViewport
函数来设置窗口的
维度
(Dimension)。
OpenGL幕后使用glViewport中定义的位置和宽高进行2D坐标的转换,将OpenGL中的位置坐标转换为你的屏幕坐标。例如,OpenGL中的坐标(-0.5, 0.5)有可能(最终)被映射为屏幕中的坐标(200,450)。注意,处理过的OpenGL坐标范围只为-1到1,因此我们事实上将(-1到1)范围内的坐标映射到(0, 800)和(0, 600)。
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
注意:除了glClear
之外,我们还调用了glClearColor
来设置清空屏幕所用的颜色。当调用glClear
函数,清除颜色缓冲之后,整个颜色缓冲都会被填充为glClearColor
里所设置的颜色。在这里,我们将屏幕设置为了类似黑板的深蓝绿色。
你应该能够回忆起来我们在
OpenGL
这节教程的内容,glClearColor
函数是一个
状态设置
函数,而glClear
函数则是一个
状态使用
的函数,它使用了当前的状态来获取应该清除为的颜色。
4、opengl渲染管线以及可控制的着色器
opengl渲染管线: 顶点着色器 -> 图元装配 -> 几何着色器 -> 测试与混合处理 -> 片段着色器 -> 光栅化处理
顶点着色器(Vertex Shader):它把一个单独的顶点作为输入。顶点着色器主要的目的是把3D坐标转为另一种3D坐标(后面会解释),同时顶点着色器允许我们对顶点属性进行一些基本处理。
几何着色器(Geometry Shader): 把图元形式的一系列顶点的集合作为输入,它可以通过产生新顶点构造出新的(或是其它的)图元来生成其他形状。
片段着色器(Fragment Shader): 在片段着色器运行之前会执行裁切,裁切会丢弃超出你的视图以外的所有像素,用来提升执行效率。主要目的是计算一个像素的最终颜色,这也是所有OpenGL高级效果产生的地方。 通常,片段着色器包含3D场景的数据(比如光照、阴影、光的颜色等等),这些数据可以被用来计算最终像素的颜色。
注意:OpenGL中的一个片段是OpenGL渲染一个像素所需的所有数据。在现代OpenGL中,我们
必须定义至少一个顶点着色器和一个片段着色器(因为GPU中没有默认的顶点/片段着色器)