diff --git a/01 Getting started/01 OpenGL.md b/01 Getting started/01 OpenGL.md index 296285d..4cd6cf8 100644 --- a/01 Getting started/01 OpenGL.md +++ b/01 Getting started/01 OpenGL.md @@ -5,7 +5,7 @@ 未翻译完成... --- -在进行这段旅程之前我们先解释下OpenGL到底是什么。它一般被认为是一个应用程序编程接口(API),包含了一系列可以操作图形、画像的方法。然而,OpenGL本身并不是一个API,仅仅是一个规范,由[Khronos组织](http://www.khronos.org/)制定并维护。 +在进行这段旅程之前我们先解释下OpenGL到底是什么。它一般被认为是一个**应用程序编程接口**(API),包含了一系列可以操作图形、画像的方法。然而,OpenGL本身并不是一个API,仅仅是一个规范,由[Khronos组织](http://www.khronos.org/)制定并维护。 OpenGL规范严格规定了每个函数该如何执行,以及它们该如何返回。至于内部具体每个函数是如何实现的,将由openGL库的开发者自行决定(注:这里开发者是指编写OpenGL库的人)。因为OpenGL规范并没有规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配(亦即,作为用户不会感受到功能上的差异)。 @@ -46,11 +46,11 @@ OpenGL的一大特性就是对扩展的支持,当一个显卡公司提出一 ```c++ if(GL_ARB_extension_name) { - // Do cool new and modern stuff supported by hardware + // 使用一些新的特性 } else { - // Extension not supported: do it the old way + // 不支持此扩展: 用旧的方式去做 } ``` @@ -58,11 +58,11 @@ OpenGL的一大特性就是对扩展的支持,当一个显卡公司提出一 ##状态机 -OpenGL自身是一个巨大的状态机:一个描述OpenGL该如何操作的所有变量的大集合。OpenGL的状态通常被称为OpenGL上下文(context)。我们通常使用如下途径去更改OpenGL状态:设置一些选项,操作一些缓存。最后,我们使用当前OpenGl上下文来渲染。 +OpenGL自身是一个巨大的状态机:一个描述OpenGL该如何操作的所有变量的大集合。OpenGL的状态通常被称为OpenGL**上下文**(context)。我们通常使用如下途径去更改OpenGL状态:设置一些选项,操作一些缓存。最后,我们使用当前OpenGl上下文来渲染。 假设当我们想告诉OpenGL去画线而不是三角形的时候,我们通过改变一些上下文变量来改变OpenGL状态,从而告诉OpenGL如何去绘图。一旦我们改变了OpenGL的状态为绘制线段,下一个绘制命令就会画出线段而不是三角形。 -用OpenGL工作时,我们会遇到一些改变OpenGL工作状态的函数(state-changing function),以及一些在这些状态的基础上执行操作的函数(state-using function)。只要你记住OpenGL本质上是个大状态机,就能更容易理解它的大部分特性。 +用OpenGL工作时,我们会遇到一些**改变OpenGL工作状态的函数**(state-changing function),以及一些在这些状态的基础上**执行操作的函数**(state-using function)。只要你记住OpenGL本质上是个大状态机,就能更容易理解它的大部分特性。 ##对象(Object) @@ -78,3 +78,52 @@ OpenGL库是用C写的,同时也支持多种语言的派生,但是核心是 }; ``` +