您的位置:首页 > 运维架构

OpenGL渲染原理

2013-05-25 22:44 423 查看
1.       把一个三维物体变换到屏幕上的像素坐标,有三个步骤:

           1)        变换。包括模型、视图和投影操作,这些操作包括旋转、移动、缩放、投影等,一般组合使用;

           2)        裁剪窗口之外的物体;

           3)        经过变换的坐标和屏幕的像素之间建立联系,即视口变换。

2.        变换

         1)        模型视图变换(相当于确定照相机的位置、角度,)

             a)        glLoadIdentity(),把当前矩阵设为单位阵,实际意义是把屏幕的中心点设为原点;

            b)        gluLookAt(),设定照相机的位置和方向,默认为照相机在原点,指向z轴负方向(即镜头的方向),朝上(即快门的方位)向量为(0,1,0);

             c)        glTranslate(),这个和b)有异曲同工之处,这个是对模型形体进行操作-移位(相当于移动坐标系原点,其实没有改变坐标系);

            d)        glScale(),物体在三个轴上的缩放;

            e)        glRotate(),模型(坐标系)进行旋转;

            f)         glMatrixMode(),指定模型视图、投影或纹理矩阵是否被修改;

       备注
             以上是常用的模型视图变换,在进行变换前必须要加入glMatrixMode(GL_MODELVIEW)和glLoadIdentity();为了保存模型视图变换之前的矩阵可添加glPushMatrix()(之           后要glPopMatrix());
        2)        投影变换之前必须要加上glMatrixMode(GL_PROJECTION)和glLoadIdentity();
         a)        gluPerspective(),创建可视空间(可以理解为镜头的焦距的大小(纵深)和视野的宽度(广角与否));
         b)        glFrustum
        3)        视口变换

         a)        glViewport(),其实际意义是图像被投影到多大的视图中,默认为被打开的整个像素矩形,其一般在WM_SIZE消息产生OnSize()函数中进行设定;

3.       颜色模型

         1)        glClearColor()与glClear();
          2)        颜色设置:glColor;
          3)        指定着色模型:glShadeModel;
4.       光照与材料
          1)        glLight,对环境光、散射光和镜面光以及光源的位置进行设定;

         2)        glLightModel,光照模型,默认是观察者位于无限远处,单面接受光照;

          3)        glEnable(GL_LIGHTING)和glEnable(GL_LIGHT0)等来启动光源

          4)        glMaterial(),材料属性的设定,包括材料属性的哪些面,环境光、散射光和镜面   光的材料属性

5.       其它

         1)        SwapBuffers(m_pDC->GetSafeHdc());

          2)  glEnable(GL_NORMALIZE);
          3)  glEnable(GL_CULL_FACE);
                glCullFace(GL_BACK);//cull面

                glEnable(GL_DEPTH_TEST);//启用深度测试
                glDepthFunc(GL_LESS);//深度测试的类型

6.       疑问

         1)        光源中的各个成分是对人眼产生效果的,其各个成分是怎么合成的?

          2)        材料属性中的成分呢?

Reference:

http://www.cnblogs.com/yujunyong/archive/2011/04/17/2018776.html

http://blog.sina.com.cn/s/blog_4ba3ba100100l1e8.html

http://hi.baidu.com/mmmmop/item/c2e6c215257747626826bb5f

http://blog.csdn.net/zhanglongit/article/details/7525918

http://technet.microsoft.com/zh-cn/library/ms537137

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OpenGL