半个多月之后,我又重新拾起了OpenGL。打开VS,看了看自己写过的代码,竟然还记得大概。但也只限于知道某一句代码是什么用处,没有它会怎么样。或许我需要看一本介绍OpenGL更基础,更详细的书。至少以后家人问起我渲染、光线追踪是什么,我不会说,瞧,这段代码就实现了渲染功能。
新学期的课程很多,每门课都有实验(哦,当然毛概没有实验)。我也不知道重拾OpenGL能坚持多久,但我不希望自己半途而废。所以我想坚持每月至少四篇博文,或许会激励我将自学坚持下去,同样,有关OpenGL的博文算是学习笔记咯。哦,对了,我学习的书名为《OpenGL超级宝典(第五版)》。
顶点Vertex(Vertices)能够通过一种称为变换矩阵(Transformation Matrix)的数学结构进行旋转。
投影矩阵(Projection Matrix)用于将3D坐标转换为二维屏幕坐标,实际线条也将在二维屏幕坐标上进行绘制。
实际绘制或填充每个定点之间的像素形成线段叫做光栅化(Rasterization)。可以通过隐藏表面消除(Hidden Surface Removal)进一步加强3D错觉。
对表面进行着色(Shading)能够创建光照错觉。着色器(Shader)是在图形硬件上执行的单独程序,用来处理顶点和光栅化任务。
纹理贴图(Texture Mapping)是渲染的新层次。
混合(Blending)将不同颜色混在一起,创建出反射效果。
计算机图形学主要四种技术,变换、着色、纹理、混合。
窗口以像素为单位,在窗口中绘制点、线和形状之前,可以通过指定占据窗口的笛卡尔空间区域实现指定坐标对翻译为屏幕坐标,该占据区域为裁剪区域。
裁剪区域的宽度和高度很少正好与窗口的宽度和高度相匹配,所以坐标系统需要从逻辑笛卡尔坐标映射到物理屏幕像素坐标,该映射通过视口的设置来指定。视口是窗口内部用于绘制裁剪区域的客户区域。
绘制的物体实际是由更小的称为图元(Primitives)的形状来组成的。
投影(Projection)用于创建几何图形的3D坐标将投影到一个2D表面(窗口背景)。通过指定投影,可以指定在窗口中显示的视景体(Viewing Volume),并指定对它如何进行变换。
正投影(Orthographic Projection)或平行投影,需要指定一个正方形或长方形的视景体,视景体之外的任何物体都不会被绘制。所有实际大小相同的物体在屏幕上都具有相同大小,不论远近。可以在正投影中通过指定远、近、左、右、顶、底裁剪平面来指定视景体,在该视景体中出现的物体和图形将被投影到一个在屏幕上出现的2D图像。
透视投影(Perspective Projection),远处物体比近处物体看上去更小,它的视景体看上去像一个棱台。
通过透视、隐藏直线消除、颜色、着色和其他技巧来创建深度幻觉。
1472

被折叠的 条评论
为什么被折叠?



