OpenGL -- 入门笔记

236 阅读2分钟

基础知识:

- 注:笔记全部摘抄 learnopengl网站

OpenGL特性:

  • 绘图模式:

    1. 立即渲染模式 immediate mode --固定渲染管线

      • 优点:容易使用、学习和理解(OpenGL的大多数功能被库隐藏起来,抽象掉很多细节)
      • 缺点:效率低,并且难以让人把握OpenGL具体是如何运作的。
    2. 核心模式 -- Core- profile

      • 优点:更多的灵活度,更高的效率,可以深入理解图形编程;
      • 缺点:难度更大,现代函数要求使用者真正理解OpenGL和图像编程。
  • 扩展 OpenGL对扩展(Extension)的支持,当一个显卡公司提出一个新特性或者渲染上的大优化,通常会以扩展的方式驱动中实现。如果一个程序在支持这个扩展的显卡上运行,开发者可以使用这个扩展提供的一些更先进更有效的图形功能。通过这种方式,开发者不必等待一个新的OpenGL规范面世,就可以使用这些新的渲染特性了,只需要简单地检查一下显卡是否支持此扩展

  • 状态机 OpenGL自身是一个巨大的状态机(State Machine),OpenGL的状态通常被称为OpenGL上下文(Context),改OpenGL状态途径有:设置选项,操作缓冲。然后使用当前OpenGL上下文来渲染。

  • 对象 OpenGL库是用C语言写的,同时也支持多种语言的派生,但其内核仍是一个C库。在OpenGL中一个对象是指一些选项的集合,它代表OpenGL状态的一个子集。

其他

  • 双缓冲 Double Buffer
    • 应用程序使用单缓冲绘图时,可能会存在图像闪烁的问题。
    • 是因为在生成的图像不是一下子被绘制出来的,而是按照从左到右,由上到下逐地绘制而成。最终图像不是在瞬间显示给用户的,不然会出现不真实的感觉。
    • 为了规避这些问题,我们应用双缓冲渲染窗口应用程序。缓冲保存着最终输出的图像,它会在屏幕上显示;而所有的的渲染指令都会在缓冲上绘制。当所有的渲染指令执行完毕后,我们交换(Swap)前缓冲和后缓冲,这样图像就立即呈显出来,之前提到的不真实感就消除了。
  • 显卡驱动
    • 由于OpenGL的大多数实现都是由显卡厂商编写的,当产生一个bug时通常可以通过升级显卡驱动来解决。这些驱动会包括你的显卡能支持的最新版本的OpenGL,这也是为什么总是建议偶尔更新一下显卡驱动。