一、OpenGL是什么

在开始这段旅程之前我们先了解一下OpenGL到底是什么。一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。如果没有图形编程接口,我们要访问GPU,就需要直接和各种寄存器、显存打交道,所以OpenGL就是在这些硬件的接触上实现了一层抽象。

OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定(注:这里开发者是指编写OpenGL库的人)。因为OpenGL规范并没有规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配(亦即,作为用户不会感受到功能上的差异)。

实际的OpenGL库的开发者通常是显卡的生产商。你购买的显卡所支持的OpenGL版本都为这个系列的显卡专门开发的。当你使用Apple系统的时候,OpenGL库是由Apple自身维护的。在Linux下,有显卡生产商提供的OpenGL库,也有一些爱好者改编的版本。这也意味着任何时候OpenGL库表现的行为与规范规定的不一致时,基本都是库的开发者留下的bug。

二、显卡驱动

驱动程序:驱动程序是一个软件组件,可让操作系统和设备彼此通信。例如,假设应用程序需要从设备中读取某些数据;应用程序会调用由操作系统实现的函数,操作系统会调用由驱动程序实现的函数。 驱动程序(由设计和制造该设备的同一公司编写)了解如何与设备硬件通信以获取数据。 当驱动程序从设备获取数据后,它会将数据返回到操作系统,操作系统会将数据返回至应用程序。

显卡驱动是由生产硬件的硬件厂商写的,它是为某个系列的显卡所开发的OpenGL的实现;而我们开发一个OpenGL的应用程序时所使用的OpenGL仅仅是一套接口,它是公共的,独立于硬件平台和操作系统的,我们根据OpenGL规范所是实现的这个程序描述的只是我们想要做什么,至于具体怎么做、实现结果是什么效果,它是由显卡驱动和硬件决定的;

OpenGL所提供的只是接口,我们所调用的也只是接口;具体的实现由显卡生产商实现,也就是他们所提供的显卡驱动;我们使用OpenGL可以调用API(这个api仅仅是函数名,仅仅是接口而已)去绘制一个三角形,但是硬件如何知道这个函数是用来绘制三角形的,这一部分就是由显卡驱动来完成,显卡驱动里会提供这个接口的具体实现,也就是说如果没有安装显卡驱动或者显卡驱动里并没有提供绘制三角形的实现,那么OpenGL里的api是毫无意义的;

由于OpenGL的大多数实现都是由显卡厂商编写的,当产生一个bug时通常可以通过升级显卡驱动来解决。这些驱动会包括你的显卡能支持的最新版本的OpenGL,这也是为什么总是建议你偶尔更新一下显卡驱动。

三、总结

开发者通过图像编程接口发出渲染命令,这些渲染命令也就是DrawCall,只有显卡驱动知道如何和GPU通信,;正是因为显卡驱动的存在,显卡驱动会将接收到的渲染命令翻译成GPU能够理解的语言,也负责将纹理等数据转换成GPU所支持的格式,之后GPU才能懂OpenGL和DirectX,显卡驱动就像是一个中介,介于图形编程接口(OpenGL和DirectX)和GPU之间。

可以将显卡驱动比喻是显卡的操作系统,是显卡的灵魂;

OpenGL与显卡驱动相关推荐

  1. opengl与显卡驱动的关系

    世界上有很多显卡制造商如NVIDIA,AMD,Intel,SGI.也有很多操作系统如Windows,Linux,MacOS,还有其他类Unix系统等等.如果NVIDIA针对Windows开发一套显卡驱 ...

  2. OpenGL和CUDA互操作的显卡驱动问题

      使用OpenGL进行图形渲染并显示出来,然后使用CUDA进行计算,将计算结果传输到OpenGL的渲染管线中.在这里可能会遇到一个问题,代码执行到cudaGraphicsGLRegisterBuff ...

  3. 图形驱动程序和显卡驱动什么区别_专业图形显卡和游戏显卡的区别以及建模和渲染的性能要求...

    首先,专业图形显卡和游戏显卡区别 所谓的游戏显卡就是针对游戏优化的一种显卡,它不适合用作专业及商业领域的工作,而它的侧重就是玩游戏,游戏的场景往往不太复杂,所以游戏的性能瓶颈大多出现在像素或者纹理处理 ...

  4. Ubuntu出现卡logo、卡住、黑屏无法正常启动、屏幕和键盘背光无法调节等一系列问题?可能是NVIDIA显卡驱动没装好...

    也不知道是幸运还是不幸,我从一开始接触ubuntu就遇到这一系列的问题, 而且一直没有一个彻底解决的办法,搞得我无比头疼,也害得我重装了无数遍系统... 国际惯例,只按照个人习惯和喜好来写,对某些人来 ...

  5. Ubunt16.04 搭建 GPU 显卡驱动 + CUDA9.0 + cuDNN7 详细教程

    红色石头的个人网站:www.redstonewill.com 如果你的电脑安装了 Ubuntu16.04,而且电脑自带一块 NVIDIA GeForce 的 GPU 显卡,那么不用来跑深度学习模型就太 ...

  6. Ubantu16.04安装显卡驱动遇到的坑

    在Ubantu下安装显卡驱动,步骤相对较繁琐,但本文经过博主的亲身实践,非常有效 首先我们先要查看版本驱动:https://www.nvidia.com/Download/index.aspx?lan ...

  7. ubuntu 16.04安装nVidia显卡驱动和cuda/cudnn踩坑过程

    推荐新版安装教程 http://blog.csdn.net/chenhaifeng2016/article/details/78874883 安装深度学习框架需要使用cuda/cudnn(GPU)来加 ...

  8. ubuntu安装nvidia显卡驱动+cuda9.0+cudnn7.0+查看cuda版本+安装tensorrt+python查看gpu显存

    一,驱动安装 显卡驱动和cuda版本关系 卸载原先驱动 sudo apt-get remove --purge nvidia-\* ubuntu-drivers devices  查看显卡类型 Nvi ...

  9. Ubuntu系统显卡驱动、CUDA、CUDNN安装(一显卡驱动)

    NVIDIA显卡驱动安装: 常用命令: //查看GPU版本 lspci | grep -i nvidia //查看NVIDIA驱动 sudo dpkg --list | grep nvidia-* / ...

  10. Ubuntu16.04显卡驱动安装和Cuda安装

    环境: 操作系统:Ubuntu 16.04  x64,USB 安装 独显:Geforce GTX 1050,本地安装 Cuda 10.0 网络在线安装 一.安装Geforce GTX 1050 驱动安 ...

最新文章

  1. 七里香飘传来的幸福简单爱
  2. 解决MySQL8.0报错:Unknown system variable 'validate_password_policy'
  3. 提高tomcat的并发能力
  4. google_glog 安装和测试
  5. Swagger 3.0 官方 starter 诞生,野生的可以扔了!
  6. VSCODE 改变Python版本到3.10
  7. c语言补码取反后什么意思,补码为什么取反加一
  8. oracle错误1327,问题简述:在oracle linux下安装oracle10g,多个文件报“Permission denied”错误...
  9. 用Matlab的FDAtool生成IIR滤波器参数
  10. IP地址及其分类(A、B、C类)
  11. mysql -u -p 可以直接登陆到mysql
  12. 我觉得贝叶斯统计是必修课!!!
  13. AToken全观:情人节妹子收了520个BTC,成吨狗粮灌到饱
  14. 山水之道第四境——精灵的飞天之舞
  15. 预装64位Win8/8.1电脑安装64位Win7详细过程(单/双系统)
  16. 阿里云(腾讯云)服务器使用宝塔,搭建Python环境,运行 django 程序
  17. ubuntu必备软件安装命令
  18. Word2vec看我这一篇就足够应付面试了
  19. 企业安全生产的保护伞,工业设备智能维保平台
  20. 文件数据丢失怎么办?推荐几款好用的文件恢复大师

热门文章

  1. Kali 无法连接到网络
  2. 杨过最后达到了独孤求败的什么境界, 其实金庸在书中已说明
  3. failed to obtain in-memory shard lock
  4. java开源规则引擎比较_常用规则引擎比较分析
  5. 腾讯优图招聘计算机视觉日常实习生
  6. 编译出错 Resource temporarily unavailable
  7. 王者荣耀刷金币C/C++语言脚本
  8. java太阳系论文摘要_毕业论文摘要
  9. 不要为优势忘乎所以——职场人士寓言(6)
  10. 【LWIP】(补充)STM32H743(M7内核)CubeMX配置LWIP并ping通