(资料图片)
OpenGL是一个图形API,API通俗的说就是一堆函数,我们可以通过调用这些函数来做一些事情,而OpenGL就是用来让我们做一些关于图形方面的事情;显卡可以更好的绘制图形,而我们需要用一些API来操纵显卡,OpenGL就是这类API中的一个,其他的还有Direct3D、Vulkan、Metal等。
这里要纠正一些误解,很多人称OpenGL为“库”、“引擎”或者“框架”,这是不对的,OpenGL的核心是一种规范,本身没有任何确定的代码,没有任何实现,它只是告诉大家,某个函数应该存在,需要某些参数,需要返回某个值,所以OpenGL也不需要下载,它本身只是一个规范,平时我们用的OpenGL,是由显卡生产厂商实现的,比如NVIDIA或者AMD显卡的驱动程序就包含了各自对OpenGL的实现。第二个误解就是OpenGL是开源的,它其实不是开源的,我们看不到它的源码,因为它是由显卡厂商们实现的,他们显然不会将显卡驱动的源码开源。
OpenGL是跨平台的,你可以只写一份OpenGL代码就可以在Windows、Mac、Linux、IOS、安卓系统上运行,但这不意味着OpenGL就比Direct3D(Windows专用)、Metal(苹果系列专用)更好,它只是用来学习的最好的API,实际上你可以底层用OpenGL,将实际的API接口写的像Direct3D。
老版本的OpenGL和现代OpenGL的区别关键在于我们对GPU的控制权,OpenGL在90年代发布,那时GPU并不是灵活的并且可编程的,我们不能随心所欲的操控它,但现在显卡产商给了我们更多的控制权,这让我们可以进一步地去优化显卡的使用;其中最重要就是着色器,它允许我们在GPU上写程序,一般情况下我们写的程序都是运行在CPU上的,但当我们针对图形处理的时候,我们可以将一些程序放到GPU上用来更精确的控制GPU,这些程序在GPU上运行的更快。
标签: