OpenGL-SuperBible-Learning-day1

  1. 渲染:将数学和图形数据转换成3D空间图像的操作叫渲染。
  2. 顶点:“点”是一切的基础。(Vertex)
  3. 投影变换:OpenGL最终的渲染设备是2D的,我们需要将3D表示的场景转换为最终的2D形式,前面使用模型变换和视变换将物体坐标转换到照相机坐标系后,需要进行投影变换,将坐标从相机—》裁剪坐标系,经过透视除法后,变换到规范化设备坐标系(NDC),最后进行视口变换后,3D坐标才变换到屏幕上的2D坐标。变换的大致思路如图1

图1

  1. OpenGL的渲染流水线。大致如图2,图3(可与图1相互参考)。

图2

图3

  1. 光栅化:实际绘制或填充每个定点之间的像素形成线段叫光栅化。(Rasterization)
  2. 形成成图像大致思路:将顶点间的线连接起来,然后对三角形进行光栅化而使对象变得有实体。
  3. OpenGL:OpenGL并非是一个工具包,而是一种底层渲染API(应用程序接口)。
  4. 2D笛卡尔坐标:笛卡尔坐标由一个x坐标和一个y坐标构成。X坐标测量水平方向的位置,而y坐标测量垂直方向的位置。
  5. 坐标裁剪:窗口是以像素为单位进行度量的。开始在窗口中绘制点、线和形状之前,要把指定的笛卡尔坐标对翻译成屏幕坐标,我们可以通过指定占据窗口的笛卡尔区域来转换,这个区域叫做裁剪区域。在二维空间中,有两种常见的裁剪区域。第一种,裁剪区域就是窗口内部最小和最大的x、y值,如图3。第二种就是根据窗口指定原点位置,如图4。在OpengL绘图中采用的裁剪坐标是第二种,并且x、y的取值为-1~+1,这称为单位坐标。当然我们平常直接使用setPosition(x=500,y=600),x和y值到最后还是会通过矩阵相乘转换成单位坐标,这是涉及到模型视图、投影的变换,即MVP变换(Model View Projection)。

    

图4   

图5

  1. 视口:把绘图坐标映射到窗口坐标,裁剪区域的宽度与高度很少正好与窗口和高度(以像素为单位)相匹配。因此,坐标系统必须从逻辑笛卡尔坐标映射到物理屏幕像素坐标。这个映射是通过一种叫做视口(ViewPort)的设置来指定的。
  2. 正投影,所有多边形都是按同样相对大小来在屏幕上绘制的。线和多边形使用平行线来直接映射到2D屏幕上。适合蓝图、文本等二维图形。如图6

图6

  1. 透视投影,通过非平行线来把图形映射到2D屏幕上,有透视缩短的特点,更加贴近现实。在这种投影中,远处的物体看上去比近处的物体更小一些。它的视景体看上去有点像一个顶部被削平的金字塔,剩下来的形状称为平截头体。靠近视景体前面的物体看上去比较接近他们的原始大小,如图7。

图7

  1. 第一章的示例Block效果运行图:

(1)简单的线框立方体与桌子(图8)

(2)隐藏固体几何体的背面能够增强3D错觉(图9)

(3)使用纯色对几何图形进行填充(图10)

(4)对表面进行着色创建光照错觉(图11)

(4)纹理贴图效果(图12)

(5)混合创建反射效果(图13)

图8

  图9

  

图10    

图11

  图12        

 

图13                                                                                         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值