openGL初学函数解释汇总
1.GLUT工具包提供的函数
//GLUT工具包所提供的函数 glutInit(&argc, argv);//对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次。 glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);//初始化显示模式,(颜色使用RGB,单缓冲GLUT_SINGLE\GLUT_DOUBLE双缓冲) glutInitWindowPosition(100, 100);//初始化窗口位置 glutInitWindowSize(400, 400);//初始化窗口大小 glutCreateWindow("OpenGL程序窗口");//创建窗口 glutDisplayFunc(&myDisplay);//作图时一定要调用的函数 glutIdleFunc(&myIdle);//空闲时调用 glutMainLoop();//进行一个消息循环,显示图像,窗口关闭则返回
2.OpenGL的标准函数
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//清空颜色缓存以及深度缓存 glRectf(-0.5f, -0.5f, 0.5f, 0.5f);//画一个矩形。四个参数分别表示了位于对角线上的两个点的横、纵坐标 glFlush();//保证前面的OpenGL命令立即执行(而不是让它们在缓冲区中等待)。其作用跟fflush(stdout)类似
//顶点的使用glVertex3f(1.0f, 3.0f, 0.0f);//其中前缀glVertex不变,后面的3代表点的维度,f是浮点型(也可为i,d等等)glBegin(GL_POINTS);//指定顶点的命令必须包含在glBegin函数之后,glEnd函数之前(否则指定的顶点将被忽略),括号中的参数指的是利用顶点需要的绘制的图像的类型,下面会有几种参数的介绍......//输入顶点,要按一定顺序输入(程序会按顺序处理输入的顶点,glbegin()中的参数会告诉我们如何处理顶点)glEnd();//glBegin()当中的几种参数类型的介绍GL_POINTS:按顺序在图中画出顶点GL_LINES:将输入的顶点两两组合,绘制成线段GL_TRIANGLE_FAN:输入的第一个点作为中心点,其余的点,按输入顺序,每两个点就可以和中心点组合成为一个三角形GL_POLYGON,GL_LINE_LOOP:输入顶点绘制成凸多边形
//顶点,直线,多边形的修整函数//关于定点glPointSize(5.0f);//定义顶点的大小//关于直线glLineWidth(5.0f);//定义直线的宽度glEnable(GL_LINE_STIPPLE);//启用虚线模式,glDisable(GL_LINE_STIPPLE)可以关闭之glLineStipple(1, 0x5555);//前一个参数是连续线段最大长度,后一个参数的二进制是16位,每一位如果是1那么画出点,否则不画//关于多边形//(1)多边形两面的绘制方式glPolygonMode(GL_FRONT,GL_FILL);//凸多边形模式(正面or反面,填充方式[绘制边界或填充图案等等])glPolygonMode(GL_BACK, GL_LINE);//同上介绍glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); // 同上介绍,设置两面均为顶点绘制方式//(2)多边形正反面的概念glFrontFace(GL_CCW);//定义凸包点列逆时针分布的面为正面,其中参数GL_CCW即为逆时针旋转,改为GL_CW则效果相反//(3)剔除多边形表面glEnable(GL_CULL_FACE);//来启动剔除功能(使用glDisable(GL_CULL_FACE)可以关闭之)glCullFace(GL_BACK);//剔除多边形的反面,参数还可以是:GL_FRONT,GL_FRONT_AND_BACK//(4)镂空的多边形,类似虚直线,多边形也可以镂空glEnable(GL_POLYGON_STIPPLE);//来启动镂空模式(使用glDisable(GL_POLYGON_STIPPLE)可以关闭之)glPolygonStipple(Mask);//其中Mask数组定义为static GLubyte Mask[128];自定义一幅图画,如何调取出图画的Mask数组?以下为调用方法/////////////////////////////////////////////static GLubyte Mask[128];FILE *fp;fp = fopen("mask.bmp", "rb");//打开保存的bmp文件if( !fp )exit(0);if( fseek(fp, -(int)sizeof(Mask), SEEK_END) )//移动文件指针,使得再读sizeof(Mask)个字节就会到达文件末尾exit(0);if( !fread(Mask, sizeof(Mask), 1, fp) )//读取文件sizeof(Mask)个字节到Mask数组中exit(0);fclose(fp);glEnable(GL_POLYGON_STIPPLE);glPolygonStipple(Mask);glRectf(-0.5f, -0.5f, 0.0f, 0.0f); // 在左下方绘制一个有镂空效果的正方形/////////////////////////////////////////////
//颜色的使用glColor3f(0.0f, 1.0f, 1.0f);//前缀glColor不变,后缀3f代表有3个浮点型参数作为点的三维坐标glClearColor(1.0f, 0.0f, 0.0f, 0.0f);//定义“空”的颜色类型(也可以认为是最初的背景色)glShadeModel(GL_SMOOTH); // 平滑方式,这也是默认方式glShadeModel(GL_FLAT); // 单色方式
//模型变换和视图变换glMatrixMode(GL_MODELVIEW);//设置当前操作的矩阵为“模型视图矩阵”,及可以利用矩阵进行旋转等变换glLoadIdentity();//将当前矩阵设置为单位矩阵(还未进行任何旋转操作)glRotatef(30.0, 0.0f, 0.0f, -1.0f);//glRotate前缀不变,后缀f代表参数是浮点型,第一个参数是旋转角度,后三个参数代表按照向量n=(0,0,-1)为轴进行旋转glTranslatef(1.0f, 2.0f, 3.0f);//函数形式和旋转函数类似,3个参数的含义分别是沿着X,Y,Z轴正方向平移的距离glScalef(1.0f,2.0f,3.0f);//函数形式同上,3个参数的含义:调用该函数以后,所有函数点的X,Y,Z坐标会乘上3个参数当中相应位置的参数数值,譬如参数为(1,2,3),则(x,y,z)变换后为(x,2y,3z)gluLookAt(0, -20, 20, 0, 0, 0, 0, 0, 1);//(前三个参数为观察点位置坐标,中间三个参数为观察目标的位置坐标,后三个参数为观察者认为的上方的方向向量)
原文地址:https://www.cnblogs.com/ZefengYao/p/9261005.html
时间: 2024-11-08 23:53:04