OpenGL学习笔记1

来源:互联网 发布:java专业培训机构 编辑:程序博客网 时间:2024/04/29 16:44

程序示例:

int main(int argc, char *argv[])

{

     glutInit(&argc, argv);

     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

     glutInitWindowPosition(100, 100);

     glutInitWindowSize(400, 400);

     glutCreateWindow("第一个OpenGL程序");

     glutDisplayFunc(&myDisplay);

     glutMainLoop();

     return 0;

}

1、glutInit:在其他GLUT使用之前调用,照抄;

2、glutInitDisplayMode:GLUT_RGB、GLUT_INDEX、GLUT_SINGLE、GLUT_DOUBLE。

3、glutInitWindowPosition:设置窗口的位置;

4、glutInitWindowSize:设置窗口的大小;

5、glutCreateWindow:参数将被作为窗口的标题;

6、glutDisplayFunc:当需要进行画图时,这个函数就会被调用;

7、glutMainLoop:这个函数可以显示窗口,并且等待窗口关闭后才会返回;

8、glClear:GL_COLOR_BUFFER_BIT;

9、glRectf:四个参数表示两个对角线坐标;

10、glFlush:保证前面的GL命令立即被执行。

一、指定一个点

OpenGL提供了一系列函数。它们都以glVertex开头,后面跟一个数字和1~2个字母。例如:glVertex2d、glVertex2f,数字表示参数的个数,2表示有两个参数;字母表示参数的类型:

s表示16位整数(OpenGL中将这个类型定义为GLshort),
        i表示32位整数(OpenGL中将这个类型定义为GLint和GLsizei),
        f表示32位浮点数(OpenGL中将这个类型定义为GLfloat和GLclampf),
        d表示64位浮点数(OpenGL中将这个类型定义为GLdouble和GLclampd),
        v表示传递的几个参数将使用指针的方式。

注意:OpenGL的很多函数都是采用这样的形式,一个相同的前缀再加上参数说明标记,这一点会随着学习的深入而有更多的体会。

二、绘制

OpenGL要求:指定顶点的命令必须包含在glBegin函数之后,glEnd函数之前,并由glBegin来指明如何使用这些点。
       glBegin(GL_POINTS);
       glVertex2f(0.0f, 0.0f);
       glVertex2f(0.5f, 0.0f);
       glEnd();

如果将GL_POINTS替换成GL_LINES,则两个点将被认为是直线的两个端点,OpenGL将会画出一条直线。

glBegin支持的方式除了GL_POINTS和GL_LINES,还有GL_LINE_STRIP,GL_LINE_LOOP,GL_TRIANGLES,GL_TRIANGLE_STRIP,GL_TRIANGLE_FAN等

       

三、设置点、线的大小和粗细

glPointSize(GLfloat size);

glLineWidth(GLfloat width);

四、画虚线

glEnable(GL_LINE_STIPPLE);

glLineStipple(2, 0x0F0F);

glLineWidth(10.0f);

glBegin(GL_LINES);

glVertex2f(0.0f, 0.0f);

glVertex2f(0.5f, 0.5f);

glEnd();

glFlush();