初识OpenGL

OpenGL在3.2之前有一个立即渲染模式,也就是固定管线渲染模式,不过已经在3.2之后废弃了。

现在OpenGL使用的是“核心模式”,在这个模式里面,效率会有很大的提高,然后灵活性也比较好。

第一个概念:状态机:

OpenGL本身就是 一个巨大的状态机,然后会使用一些变量去描述OpenGL如何运行,OpenGL的状态通常被称为OpenGL的上下文,我们通常对上下文的操作有:设置选项和操作缓冲。

然后使用当前的context进行渲染。

第二个概念:对象

OpenGL中的对象可以理解为一些属性的集合,它代表了OpenGL的状态的子集。比如:

struct  object_name{
    float option1;
    float option2;
    char[] name;
}

我们可以把OpenGL的上下文看作是一个巨大的结构体,然后对象就是:

//OpenGL的状态,也就是上下文
struct OpenGL_Context{
    ...
    object_name* object_window_taaget;
    ...
}

我们可以通过下面这一小段代码来加深印象:

// 创建对象
unsigned int objectID = 0;
// 用一个ID保存对象的引用
gLGenObject(1,&objectID);

// 绑定上下文:
glBindObject(GL_WINDOW_TARGET,objectID);

// 设定当前绑定对象的一些属性
glSetObjectOption(GL_WINDOW_TARGET,GL_OPTION_WINDOW_WIDTH,800);
glSetObjectOption(GL_WINDOW_TARGET,GL_OPTION_WINDOW_WIDTH,600);

// 将上下文设回默认,也就是和当前的对象解绑,
glBindObject(GL_WINDOWS_TARGET,0);

以上就是帮助理解OpenGL工作的小流程。

对象的好处:我们可以设置多个对象以及其选项,每一个对象都可以是不同的,当我们需要执行OpenGL状态操作或者上下文操作的时候,只需要绑定对应的对象就可以。

比如:我们现在有3D模型的一些数据(人物,房屋之类的),当我们想对人物的腿有操作的时候,我们就可以把有关腿的数据和当前上下文进行绑定,然后就可以在当前的上下文中进行渲染了。

你可能感兴趣的:(OpenGL)