【OpenGL学习】前置知识

一、OpenGL

  • OpenGL通常被认为是一个图形API,包含了一系列可以操作图形、图像的函数。但其实是一个标准

二、核心模式与立即渲染模式

  • 早期的OpenGL使用立即渲染模式(固定渲染管线),这个模式下绘制图形很方便。立即渲染模式确实容易使用和理解,但是效率太低。
  • 当使用OpenGL的核心模式时,OpenGL迫使我们使用现代的函数。现代函数的优势是更高的灵活性和效率,然而也更难于学习。立即渲染模式从OpenGL实际运作中抽象掉了很多细节,因此它在易于学习的同时,也很难让人去把握OpenGL具体是如何运作的。

三、扩展

  • OpenGL的一大特性就是对扩展(Extension)的支持,如果一个程序在支持这个扩展的显卡上运行,开发者可以使用这个扩展提供的一些更先进更有效的图形功能。使用这些新的渲染特性了,只需要简单地检查一下显卡是否支持此扩展。

    使用拓展的代码样子和下面差不多:

    if(GL_ARB_extension_name)
    {
        // 使用硬件支持的全新的现代特性
    }
    else
    {
        // 不支持此扩展: 用旧的方式去做
    }
    

四、状态机

  • OpenGL自身是一个巨大的状态机(State Machine):一系列的变量描述OpenGL此刻应当如何运行。

    OpenGL的状态通常被称为OpenGL上下文(Context)。

    我们通常使用如下途径去更改OpenGL状态:设置选项,操作缓冲。最后,我们使用当前OpenGL上下文来渲染。

  • 状态设置函数(State-changing Function)将会改变上下文。

  • 状态使用函数(State-using Function)会根据当前OpenGL的状态执行一些操作。

五、对象

  • 在OpenGL中一个对象是指一些选项的集合,它代表OpenGL状态的一个子集。

    当我们使用一个对象时,通常看起来像如下一样(把OpenGL上下文看作一个大的结构体):

    // OpenGL的状态
    struct OpenGL_Context {
        ...
        object* object_Window_Target;
        ...     
    };
    
posted @ 2020-06-18 14:56  FascalXX  阅读(156)  评论(0)    收藏  举报