码迷,mamicode.com
首页 > 其他好文 > 详细

openGL初学函数解释汇总

时间:2018-07-03 23:59:08      阅读:351      评论:0      收藏:0      [点我收藏+]

标签:bit   矩阵   创建   stdout   idle   dem   ...   概念   clear   

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);//(前三个参数为观察点位置坐标,中间三个参数为观察目标的位置坐标,后三个参数为观察者认为的上方的方向向量)

 

openGL初学函数解释汇总

标签:bit   矩阵   创建   stdout   idle   dem   ...   概念   clear   

原文地址:https://www.cnblogs.com/ZefengYao/p/9261005.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!