3D应用程序的窗口,显示在显示器上,窗口所在的每个像素的坐标我们是知道的(通过Windows API),那么这些像素又是怎么对应于显卡的输出像素信息呢?
简单来说,这里有一个坐标转换的问题,即把显卡缓冲区的坐标转换到屏幕的坐标。其实很好理解,显卡缓冲区是有着固定大小的一块内存或显存。里面存储的是每一帧的像素信息,可以看作存的是一张照片。那么这张照片如果要显示在窗口里(或全屏显示),就必然要考虑:显示的位置,显示的放缩比例了。
那么缓冲区内存储的像素是怎么来的呢?
概扩起来大致由以下各个因素构成:
顶点的颜色,光照,物体材质,纹理,雾效等。通过将我们虚构的三维场景按照相对于人眼(假想的,根据常规下,人眼离屏幕的距离、角度等)的某个视角,根据远小近大的原则映射到平面的缓冲区中。其中需要考虑,物体离人眼的距离和物体的透明度等。(待续)