OpenGL文章汇总

学而不思则罔,思而不学则殆
攻吾之短者是吾师

《00-OpenGL绘制三角形》
《01-OpenGL基础渲染》

我们身处的时代好,有幸见到了CRT(高中计算机实验室胖胖身体的电脑显示器)电子显示器到液晶显示器再到现在的8K电视的发展...

计算机3D图形在实质上也是平面的,它只是在计算机屏幕上所显示的二维图像,但它可以提供深度(或第三维)的错觉(画家画的3D图)。

计算机屏幕是在平面上显示平面图像,而不是通过不同的视角在两只眼睛上显示两幅图像。绝大多数3D计算机图像实际上是近视3D,这种近似效果和多年来画家在绘画作品中实现视觉深度所使用的的手法是一样的,就像人们用一只眼睛也能观察到3D效果一样。

3D效果,一个线索是由光线照射产生的表面着色,另一个线索是近处的物体看起来比远处的物体要大。这种透视效果称为透视缩短。这种效果加上颜色的改变、纹理、光照、着色以及各种不同的颜色强度共同组成了我们对三位图像的认知。

顶点可以通过变换矩阵的数学结构进行旋转,投影矩阵用于将3D坐标转换成二维屏幕坐标,实际的线条也将在二维屏幕坐标上进行绘制。

光栅化是实际绘制或填充每个定点之间的像素形成线段,三角形和多边形也会被光栅化或填充。

着色是通过表面在顶点之间改变颜色值,能够轻松创建光线照射在一个红色立方体上的效果,着色器则是在图形硬件上执行的单独程序,用来处理顶点和执行光栅化任务。

纹理贴图是一幅用来贴到三角形或多边形上的图片。

混合是将不同颜色混合在一起

实心3D几何体是将顶点间的点连接起来,然后对三角形进行光栅化而使对象变得有实体

窗口是以像素为单位进行度量的。开始在窗口中绘制点、线和形状之前,必须告诉OpenGL如何把执行的坐标对翻译为屏幕坐标。

视口:把绘图坐标映射到窗口坐标,裁剪区域的宽度和高度很少正好与窗口的宽度和高度(以像素为单位)相匹配。坐标系统必须从逻辑笛卡尔坐标映射到物理屏幕像素坐标。视口就是窗口内部用于绘制裁剪区域的客户区域。视口简单地把裁剪区域映射到窗口中的一个区域。

顶点是空间中的一个位置,在2D和3D中,当我们绘制一个物体时,实际上都是用一些更小的称为图元的形状来组成这个物体。图元是一维或二维的实体或表面,如点、直线和多边形(平面多边的形状)。在3D空间中,我们把图元组合在一起创建3D物体。

投影:从3D到2D,不管我们觉得自己的眼睛所看到的三位图像有多么真实,屏幕上的像素实际上只是二维的。

那么OpenGL是如何把笛卡尔坐标翻译为可以在屏幕上绘制的二维坐标呢?答案就是"三角法和简单的矩阵操纵"。用于创建几何图形的3D坐标将投影到一个2D表面(窗口背景)。投影分为正投影和透视投影。

正投影:使用这种投影时,需要指定一个正方形或长方形的视景体。视景体之外的任何物体都不会被绘制。所有实际大小相同的物体在屏幕上都居于相同的大小,不管他们是远是近。
透视投影:远处的物体看上去比近处的物体更小一些。靠近视景体前面的物体看上去比较接近它们的原始大小。但是,当靠近视景体后部的物体被投影到视景体的前部时,它们看上去就显得比较小。在模拟和3D动画中,这种投影能够获得最大程度的逼真感。

你可能感兴趣的:(OpenGL文章汇总)