实际上,OGL的输出并不一定直接修改on screen buffer。有三种可能情况:
1. 下图中的bufer就是on screen buffer,或者是on screen buffer的一部分,此时,OGL的输出直接修改on screen buffer的内容。
【扩展】当应用程序以front buffer作为draw buffer,或者选择single buffer时,是这样的情况,但是屏幕很有可能会出现闪烁现象。
2. buffer是独立于on screen buffer的存在,OGL首先输出到buffer中,然后再在适当的时候,将buffer中的数据拷贝到on screen buffer中。buffer的大小可以和on screen buffer相同,也可以小于on screen buffer。
【扩展】这种方法被称为blit
3. buffer是独立于on screen buffer的存在,而且两者的大小是相同的,也就是说,这是一个全屏的程序,OGL首先输出到buffer中,然后再在适当的时候,将这块buffer当做on screen buffer交给Display Controller输出到显示设备中。
实际上,OGL的输出除了影响on screen buffer外,还有一些其他输出。在此之前,我们先来了解Fragment的概念。
我们知道,显示器是由像素pixel组成的,