OpenGL学习笔记(四)

1、计算机图形学旨在生成三位物体的二维图象,因为在屏幕上只能绘制二维图象,有三种操作将物体的三维坐标转换为屏幕上的像素位置
变换:用矩阵乘法表示 ,包括模型变换、视点变换和投影变换。这些操作中包括旋转、平移、缩放、反射、正交投影和透视投影。通常,可以使用多种变换的组合来绘制场景。
裁减:场景被渲染到矩形窗口中,因此必须裁减掉位于窗口外的物体(或其某部分)。在三位计算机图形学中,裁减指的是剔除位于裁减面另一边的物体。
视口变换:最后,必须在变换后的坐标和屏幕像素之间建立的对应关系。

2、 生成场景的变换过程类似于用相机拍照
   (1) 将相机固定在三脚架上,并使之对准场景(视点变换)
   (2) 让要拍摄的场景位于取景框中合适的位置(模型变换)
   (3) 选择相机镜头或调整放大倍数(投影变换)
   (4) 决定照片的大小,如放大(视口变换)
   完成上述步骤后,便可以拍摄照片(绘制场景)。
   为指定视点变换、模型变换和投影变换,需要建立一个4×4的矩阵(M),然后将其与场景中的每个顶点(v)的坐标相乘,来完成变换:v1 = Mv。视点变换和模型变换将被合并,形成模型视点矩阵,并将其应用于物体坐标,就得到视点坐标(eye coordinate)。然后OpenGL应用投影矩阵,以获得剪裁坐标,这种变换定义了一个视景体,视景体以外的物体将被剪裁掉,这样在最后的场景中将不绘制它们。执行完剪裁操作后,将执行投影除法(perspective division)——将坐标值除以w,生成归一化的设备坐标。最后,应用视口变换,将经过变换后的坐标转换为窗口坐标,可以操纵视口的大小,以放大、缩小或拉伸图象。

3、通用的变换函数
   注意在调用变换函数之前,必须指出需要修改的是模型视点矩阵还是投影矩阵,为此可以使用函数glMatrixMode()来选择要修改模型视点矩阵、投影矩阵还是纹理矩阵,接下来的变换函数将影响所指定的矩阵。通用的变换函数还有 glLoadIdentity() 将当前可被修改的矩阵设置为一个4×4的单位矩阵。
glLoadMatrix*() glLoadTransposeMatrix*() 将当前矩阵设置为该函数参数指定的值;
glMultMatrix*() glMultTransposeMatrix*() 将当前矩阵与参数指定的矩阵相乘, 注意如果当前矩阵为C,函数参数指定的矩阵为M,相乘得到的矩阵为CM,作为当前矩阵。且还要注意glMultMatrix*()参数指定的矩阵M是按列排序的,glMultTransposeMatrix*()参数指定的矩阵M是按行排序的(和C语言相同)

4、视点变化和模型变换
   OpenGL中,视点变化和模型变化是相互关联的,因此它们被合并为模型视点矩阵。执行模型变换或者视点变换之前,必须使用参数GL_MODELVIEW 调用函数glMatrixModel()。
 

你可能感兴趣的:(c,语言,图形,照片)