(随笔)计算机图形学常用基本概念

计算机图形学=表示+绘制+交互

绘制管线(图形流水线):应用程序阶段---几何处理阶段---光栅阶段

绘制概念:主要指将计算机中对象的数字几何模型转化为直观形象的图形或图像形式,是一个数字几何模型的视觉可视化过程。


应用程序阶段:将数据以图元的形式提供给图形硬件。数据包括:描述三维几何模型的点、线或多边形,同时也提供用于表面纹理映射的图像或者位图。

几何处理阶段:以每个顶点为基础对几何图元进行处理,并从三维坐标变换为二维屏幕坐标。


光栅阶段(像素处理阶段):屏幕对象首先被传送到像素处理器进行光栅化,并对每个像素进行着色,然后输出到帧缓冲器中,最后输出到显示器中。

什么是光栅化?

光栅化:几何处理阶段不是传来很多的顶点、颜色以及纹理坐标吗,这时候我们就要给每个像素准确配色,确保我们能够准确的绘制整个图像,这个配色的过程就叫做光栅化(或叫做扫描转换)。通俗点来说,就是将上一个阶段生成的屏幕二维坐标顶点转化为屏幕上的像素=_=。

 gluOrtho2D、glViewport、glutInitWindowSize区别与关系

void gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top)是二维的裁剪窗口函数(正交投影函数)。它的裁剪面是一个左下角点为(left,bottom)、右上角点为(right,top)的矩形。在世界坐标系中按照点的坐标将图元绘制完毕之后,在这个裁剪面中的图元信息将显示出来,不在这个矩形裁剪面中的图元信息将会被丢弃。(其实就可以理解对这个裁剪面进行正交投影)。


视区函数glViewport(GLint x,GLint y,GLsizei width,GLsizei height)是将裁剪过后的图元信息显示在最终的窗口上面,x,y确定了视区左下角在窗口上面的位置,width和height确定了视区的宽度和高度(width与height值越大,图元将会被放大),如果width/height不等于裁剪窗口的宽长比率,那么显示将会产生变形。通过调节glViewport的参数, 可以调节裁剪后的图元在屏幕窗口上的显示位置和缩放。

glutInitWindowSize定义屏幕上显示窗口的大小,视口函数定义了剪裁面在整个窗口上的显示区域和位置,默认情况下视口函数定义的是跟整个窗口一致的,即全窗口显示,通过设置视口,可以设定模型在窗口的哪一个区域显示

三者的基本关系为:

世界坐标系内模型 --> gluOrtho2D按正交投影裁剪要显示的部分 --> glutInitWindowSize定义显示窗口大小(即定义在屏幕上可作图的显示区域)--> glViewport定义视口(定义世界坐标系的截取窗口在屏幕显示窗口上绘制的大小、位置)

猜你喜欢

转载自blog.csdn.net/yuquan87/article/details/80001257