zoukankan      html  css  js  c++  java
  • OpenGL的简单研究-开端

    一直想要学习的但是没有学习的东西,大学一直在等待这个时间,终于可以闲下来研究一下这个部分的内容了。

    计算机图形学,让计算机处理各种图像的东西,里面也存在很多算法和数学知识,很值得研究的一个领域,之前一直混迹在各种Web和服务器之中,终于可以学一些感觉很酷的东西。其实Web服务器也很酷。

    我准备的运行环境还是比较简单的,是Win10操作系统,VS2015的开发环境。因为这种方式配置简单一些,之前试过使用GCC作为编译器和CFree作为开发环境,一直不成功,于是就用开了VC开发。

    环境配置的过程是在网上百度的,内容没有什么技术含量,那么久开始看第一个代码吧。

    一般都是从Hello World开始的,但是OpenGL还是从画一个方框开始吧:

     1 #include <GL/glut.h>
     2 void myDisplay() {
     3     glClearColor(0.0, 0.0, 0.0, 0.0);
     4     glClear(GL_COLOR_BUFFER_BIT);
     5 
     6     glColor3f(1.0f, 1.0f, 1.0f);
     7     glRectf(-0.5, -0.5, 0.5, 0.5f);
     8 
     9     glBegin(GL_TRIANGLES);
    10     glColor3f(1.0f, 0.0f, 0.0f);
    11     glColor3f(0.0f, 1.0f, 0.0f);
    12     glColor3f(0.0f, 0.0f, 1.0f);
    13     glEnd();
    14 
    15     glPointSize(3);
    16     glBegin(GL_POINT);
    17     glColor3f(1.0f, 0.0f, 0.0f);
    18     glColor3f(0.0f, 1.0f, 0.0f);
    19     glColor3f(0.0f, 0.0f, 1.0f);
    20     glEnd();
    21 
    22     glFlush();
    23 }
    24 
    25 int main(int argc,char* argv[]) {
    26     glutInit(&argc, argv);
    27     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    28     glutInitWindowPosition(100, 100);
    29     glutInitWindowSize(400,400);
    30     glutCreateWindow("hello world");
    31     glutDisplayFunc(&myDisplay);
    32     glutMainLoop();
    33     return 0;
    34 }

    这个程序的作用是画一个白色的方框,下面分析一下这个代码:

    在对于OpenGL中会有下面几个操作,比较基础和固定:

     1 int main(int argc,char* argv[]) {
     2     //对GLUT进行初始化,函数必须在其他GLUT使用之前调用一次,固定格式。
     3     glutInit(&argc, argv);
     4     //设置显示方式,RGB为RGB颜色,还有INDEX索引颜色,SINGLE单缓冲,DOUBLE双缓冲
     5     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
     6     //在屏幕出现的位置
     7     glutInitWindowPosition(100, 100);
     8     //窗口的大小
     9     glutInitWindowSize(400,400);
    10     //创建窗口,标题为“helloworld”,而且这个窗口创建之后不会立即显示在屏幕上,必须调用了glutMainLoop()才会显示在屏幕上
    11     glutCreateWindow("hello world");
    12     //设置一个函数,画图是调用这个函数
    13     glutDisplayFunc(&myDisplay);
    14     glutMainLoop();
    15     return 0;
    16 }
     1 //画图的函数
     2 void myDisplay() {
     3     //清空颜色为黑色,就是不显示图像的地方为黑色
     4     glClearColor(0.0, 0.0, 0.0, 0.0);
     5     //设置背景为清空颜色
     6     glClear(GL_COLOR_BUFFER_BIT);
     7     
     8     glColor3f(1.0f, 1.0f, 1.0f);
     9 
    10     //画图,画一个矩形
    11     glRectf(-0.5, -0.5, 0.5, 0.5f);
    12 
    13     
    14 
    15     /*
    16     glBegin(GL_TRIANGLES);
    17     glColor3f(1.0f, 0.0f, 0.0f);
    18     glColor3f(0.0f, 1.0f, 0.0f);
    19     glColor3f(0.0f, 0.0f, 1.0f);
    20     glEnd();
    21 
    22     glPointSize(3);
    23     glBegin(GL_POINT);
    24     glColor3f(1.0f, 0.0f, 0.0f);
    25     glColor3f(0.0f, 1.0f, 0.0f);
    26     glColor3f(0.0f, 0.0f, 1.0f);
    27     glEnd();
    28 
    29     */
    30 
    31 
    32     //保证前面的命令立即执行
    33     glFlush();
    34 }
  • 相关阅读:
    鼠标划过出现子菜单
    让dedecms(织梦)的list标签支持weight排序
    win7 64位无法安装网络打印机
    点击外部链接, 让iframe父页面也跟着显示
    C/C++指针(转)
    OO与设计模式的原则、目标 (转)
    页面添加QQ
    Windows Form 中的鼠标事件
    深入浅出C#消息
    初始化列表
  • 原文地址:https://www.cnblogs.com/Summer7C/p/5922515.html
Copyright © 2011-2022 走看看