厦门模板做网站,网页特效制作,国内哪个网站做水产比较大,最新腾讯新闻一、OpenGL的组成 图元函数#xff08;primitive function#xff09;指定要生成屏幕图像的图元。包括两种类型#xff1a;可以在二维、三维或者四维空间进行定义的几何图元#xff0c;如多边形#xff1b;离散实体#xff1b;位图。属性函数#xff08;attribute funct…一、OpenGL的组成 图元函数primitive function指定要生成屏幕图像的图元。包括两种类型可以在二维、三维或者四维空间进行定义的几何图元如多边形离散实体位图。属性函数attribute function负责控制图元的外观。这类函数定义了颜色、线型、材质属性、光照以及纹理。观察函数viewing function指定摄像机的属性。OpenGL提供一个虚拟摄像机我们可相对于由图元函数定义的对象设置该摄像机的位置和朝向。我们也可以控制摄像机的镜头参数以便制造出广角或长焦效果。查询函数query function允许我们决定某一特定系统的性能以及OpenGL状态变量的取值。控制函数control function允许我们启用或禁用各种OpenGL特性如消隐、纹理映射和光照等。输入与窗口函数不属于OpenGL核心库但是由于它们在交互式程序中的重要地位这类函数已被包含在GLUT库中。这些函数使我们能够对屏幕中的窗口进行控制并使用鼠标和键盘。 二、库组织结构 下图是Linux平台下实现的库组织结构 对于Windows 或 Macintosh平台也有一张类似的组织结构图。 应用程序既可以使用OpenGL、GLU以及GLX库中的函数也可以直接使用X库或X工具集中的函数。 另外还有一种折衷的方法是借助GLUT库这样可以使同一个程序能够在不同的平台下重新编译和运行。 三、GLUT void glutInit(int * argc, char ** argv);
//初始化GLUT应在其他GLUT函数和OpenGL函数之前进行调用。
//glutInit()接收来自main函数的参数程序可以具体实现相关的方式来使用这些参数 所有的GLUT函数都是以glut为前缀。 函数glutCreateWindow()将一个窗口以默认尺寸300*300像素显示在屏幕的默认位置上屏幕左上角。该函数的参数使我们可为窗口创建一个标题。 int glutCreatewindow(char * title)
//在屏幕上创建一个窗口该窗口的标题由参数title给出。
//在多窗口情况下该函数返回一个标识所创建窗口的整数。 下图是带有GLUT的库组织结构 四、事件循环和回调函数 void glutDisplayFunc(void (*func)(void))
//函数func()在每次需要对窗口重绘时被调用。
void glutMainLoop()
//使程序进入无限事件处理循环。该函数的调用应作为main函数最后一条语句出现 提示GLUT回调函数的形式是固定的。所以若要在不同的函数之间进行值传播可能需要借助全局变量。 五、矩形的绘制 void glVertex234sifd(type xcoordinate,type ycoordiante,...)
void glVertex234sifd(type * coordinates)
//指定顶点在二维、三维或思维空间中的位置坐标坐标值的类型可以是short(s)、int(i)、float(f)或double(d)。
//如果函数名的末尾出现了v则type为一个指向指定类型的坐标数组的指针。 void glBegin(GLenum mode)
//指定mode类型对象的起始点。mode可取GL_POINTS、GL_LINES或GL_POLYGON
void glEnd()
//指定顶点列表的终止点 提示在顶点列表的末尾不要忘记包含glEnd()。 void glClear(GLbitfield mask)
//清空mask指示的所有缓存的位。
//其中mask可由定义在gl.h中的常量通过逻辑或运算构成。GL_COLOR_BUFFER_BIT指颜色缓存 void glFlush()
//强制执行之前缓存的所有OpenGL命令 六、示例程序 Github地址 1 #include GL/glut.h2 void display() //定义了所要绘制的图形实体3 {4 glClear(GL_COLOR_BUFFER_BIT);5 glBegin(GL_POLYGON);6 glVertex2f(-0.5, -0.5);7 glVertex2f(-0.5, 0.5);8 glVertex2f(0.5, 0.5);9 glVertex2f(0.5, -0.5);
10 glEnd();
11 glFlush();
12 }
13
14 int main(int argc, char ** argv) //OpenGL的初始化
15 {
16 glutInit(argc, argv);
17 glutCreateWindow(simple);
18 glutDisplayFunc(display);
19 glutMainLoop();
20 } 转载于:https://www.cnblogs.com/OctoptusLian/p/6343194.html