• OpenGL(二)之使用GLUT进行显示窗口管理


    1.在VS2013中建立一个OpenGL工程

    选择File->New->Project,然后选择VC下的Win32 Console Application,选择一个名字,然后按OK。

    在谈出的对话框左边点Application Settings,找到Empty project并勾上,选择Finish。

    然后向该工程添加一个代码文件,取名为“OpenGL.cpp”。

    搞定了,就跟平时的工程没什么两样的。

     

    2.第一个OpenGL程序

      

     1 //GLUT的头文件
     2 //本来OpenGL程序一般还要包含<GL/gl.h>和<GL/glu.h>,但GLUT的头文件中已经自动将这两个文件包含了,不必再次包含
     3 #include <GL/glut.h>
     4 
     5 void myDisplay(void)
     6 
     7 {
     8     //表示清除颜色
     9     glClear(GL_COLOR_BUFFER_BIT);
    10 
    11     //画一个矩形。四个参数分别表示了位于对角线上的两个点的横、纵坐标
    12     glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
    13 
    14     //保证前面的OpenGL命令立即执行(而不是让它们在缓冲区中等待)
    15     glFlush();
    16 
    17 }
    18 
    19 //带命令行参数的main函数
    20 int main(int argc, char *argv[])
    21 
    22 {
    23     //以glut开头的函数都是GLUT工具包所提供的函数
    24 
    25     //对GLUT进行初始化,这个函数必须在其它的GLUT使用之前调用一次。其格式比较死板,一般照抄这句glutInit(&argc, argv)就可以了
    26     glutInit(&argc, argv);
    27 
    28     //设置显示方式,其中GLUT_RGB表示使用RGB颜色,与之对应的还有GLUT_INDEX(表示使用索引颜 色)。
    29     //GLUT_SINGLE表示使用单缓冲,与之对应的还有GLUT_DOUBLE(使用双缓冲)
    30     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    31 
    32     //设置窗口在屏幕中的位置
    33     glutInitWindowPosition(100, 100);
    34 
    35     //设置窗口的大小
    36     glutInitWindowSize(400, 400);
    37 
    38     //根据前面设置的信息创建窗口。参数将被作为窗口的标题
    39     //注意:窗口被创建后,并不立即显示到屏幕上。需要调用glutMainLoop才能看到窗口
    40     glutCreateWindow("第一个OpenGL程序");
    41 
    42     //每当GLUT确定一个窗口的内容需要重新显示时,通过glutDisplayFunc() 所注册的那个回调函数就会被执行
    43     //应该把重绘场景所需要的所有代码都放在这个显示回调函数里。
    44     glutDisplayFunc(&myDisplay);
    45 
    46     //所有已经创建的窗口将会在这时显示,对这些窗口的渲染也开始生效
    47     //事件处理循环开始启动,已注册的显示回调函数被触发。一旦进入循环,它就永远不会退出。
    48     glutMainLoop();
    49 
    50     return 0;
    51 
    52 }

    该程序的作用是在一个黑色的窗口中央画一个白色的矩形。具体情况请看注释~~

    这就是简单的第一个OpenGL程序~~

  • 相关阅读:
    Hibernate
    Mysql
    JavaWeb
    Springboot
    spring MVC
    spring
    mybatis学习
    ftp客户端封装
    win10子系统 wsl开机启动ssh服务
    eclipse 终于官方支持代码模糊提示了
  • 原文地址:https://www.cnblogs.com/tjulym/p/5004744.html
Copyright © 2020-2023  润新知