OpenGL-光源位置的控制
视图变换:将相机移动到准备拍摄的位置,将它对准某个方向。 模型变换:将准备拍摄的对象移动到场景中的指定位置。光源保持静止:在使用完视图和模型变换之前设置光源的位置,init()后面,display()之前。光源出现在视图变换之前,后面进行的变换与光源没有关系,相对于视点固定。
视图变换:将相机移动到准备拍摄的位置,将它对准某个方向。 模型变换:将准备拍摄的对象移动到场景中的指定位置。光源保持静止:在使用完视图和模型变换之前设置光源的位置,init()后面,display()之前。光源出现在视图变换之前,后面进行的变换与光源没有关系,相对于视点固定。
在可编程管线中,我们能够编码的就是Vertex Shader(顶点着色器) 和 Fragment Shader(片元着色器),这也是渲染过程中,必备的2个着色器。
OpenGL是一份API规范,并不是一个库。记住这点非常重要!它意味着每一个API背后的具体实现都依赖于你的GPU硬件、操作系统以及显卡驱动。
几何顶点被组合为图元(点,线段或多边形),然后图元被合成片元,最后片元被转换为帧缓存中的象素数据。图元被分几步转换为片元:图元被适当的裁剪,颜色和纹理数据也相应作出必要的调整,相关的坐标被转换为窗口坐标。最后,光栅化将裁剪好的图元转换为片元。
几乎每个图形程序的重要目标之一都是在屏幕上绘制图形。屏幕是由一个矩形像素数组组成的,每个像素都可以在图像的某一个点上显示一个某种颜色的微小方块。在光栅化阶段(包括纹理和雾)之后,数据就不再是像素,而是片段。每个片段都具有与像素对应的坐标数据以及颜色值和深度值。
帧缓存:它是屏幕所显示画面的一个直接映象,又称为位映射图(Bit Map)或光栅。帧缓存的每一存储单元对应屏幕上的一个像素,整个帧缓存对应一帧图像。帧缓冲区是指服务器(显存)中存储像素相关信息(颜色、深度)的存储空间。系统提供了帧缓冲区对象包括多个缓冲区,有颜色缓冲区、深度缓冲区、模板缓冲区等。
图形管线(graphics pipeline)向来以复杂为特点,这归结为图形任务的复杂性和挑战性。OpenGL作为图形硬件标准,是最通用的图形管线版本。2016年正式发布的Vulkan是OpenGL ES™的继任者,它为开发者提供更大的控制权以及更透明的程序设计,从总体上比OpenGL ES具有更大的潜力将性能最大化。
OpenGL绘制三维图形时涉及多种坐标系,各个坐标系都有它各自的作用。本文将介绍以下四个常见的坐标系:模型(物体)坐标系、世界坐标系、相机(人眼)坐标系和窗口坐标系。下面我们逐个讲解这些坐标系的作用。
本文主要是对红宝书(第八版)第五章中给出的透视投影矩阵和正交投影矩阵做一个简单推导。投影矩阵的目的是:原始点P(x,y,z)对应后投影点P'(x',y',z')满足x',y',z'∈[-1,1]。
<font color="Purple"><strong>透视投影 </strong></font>
OpenGL着色语言(OpenGL Shading Language)是用来在OpenGL中着色编程的语言,也即开发人员写的短小的自定义程序,他们是在图形卡的GPU (Graphic Processor Unit图形处理单元)上执行的,代替了固定的渲染管线的一部分,使渲染管线中不同层次具有可编程性。