1
0
mirror of https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git synced 2025-08-23 04:35:28 +08:00

Replace html with tags

This commit is contained in:
Meow J
2015-07-11 21:09:55 +08:00
parent db7a0d06a5
commit 6edab0e657
7 changed files with 92 additions and 71 deletions

View File

@@ -9,9 +9,10 @@ OpenGL规范严格规定了每个函数该如何执行以及它们该如何
实际的OpenGL库的开发者通常是显卡的生产商。每个你购买的显卡都会支持特定版本的OpenGL通常是为一个系列的显卡专门开发的。当你使用苹果系统的时候OpenGL库是由苹果自身维护的。在Linux下有显卡生产商提供的OpenGL库也有一些爱好者改编的版本。这也意味着任何时候OpenGL库表现的行为与规范规定的不一致时基本都是库的开发者留下的bug。快甩锅
<div style="border:solid #AFDFAF;border-radius:10px;background-color:#D8F5D8;margin:10px 10px 10px 0px;padding:10px">
由于大多数实现都是由显卡厂商编写的当产生一个bug时通常可以通过升级显卡驱动来解决。这些驱动会包括你的显卡能支持的最新版本的OpenGL这也是为什么总是建议你偶尔更新一下显卡驱动。
</div>
!!! Important
由于大多数实现都是由显卡厂商编写的当产生一个bug时通常可以通过升级显卡驱动来解决。这些驱动会包括你的显卡能支持的最新版本的OpenGL这也是为什么总是建议你偶尔更新一下显卡驱动。
Khronos公开主持所有版本的OpenGL规范书的制定。有兴趣的读者可以找到OpenGL3.3(我们将要提到的版本)的[规范书](https://www.opengl.org/registry/doc/glspec33.core.20100311.withchanges.pdf)。如果你想深入到OpenGL的细节注意只描述函数的功能而不管实现这是个很好的选择。该规范还提供一个强大的可以寻找到每个函数具体功能的参考。
@@ -27,9 +28,8 @@ Khronos公开主持所有版本的OpenGL规范书的制定。有兴趣的读者
现今更高版本的OpenGL已经发布目前最新是4.5你可能会问为什么我们还要学习3.3答案很简单所有OpenGL的更高的版本都是在3.3的基础上添加了额外的功能并不更改核心架构。新版本只是引入了一些更有效率或更有用的方式去完成同样的功能。因此所有的概念和技术在现代OpenGL版本里都保持一致。当你的经验足够你可以轻松使用来自更高版本OpenGL的新特性。
<div style="border:solid #E1B3B3;border-radius:10px;background-color:#FFD2D2;margin:10px 10px 10px 0px;padding:10px">
当使用新版本OpenGL的新特性时只有新一代的显卡能够支持你的应用程序。这也是为什么大多数开发者基于较低版本的OpenGL编写程序并有选择的启用新特性。
</div>
!!! Attention
当使用新版本OpenGL的新特性时只有新一代的显卡能够支持你的应用程序。这也是为什么大多数开发者基于较低版本的OpenGL编写程序并有选择的启用新特性。
在有些教程里你会发现像如下方式注明的新特性。
@@ -75,11 +75,11 @@ OpenGL库是用C写的同时也支持多种语言的派生但是核心是
};
```
<div style="border:solid #AFDFAF;border-radius:10px;background-color:#D8F5D8;margin:10px 10px 10px 0px;padding:10px">
<span style="font-size:20px"><b>原始类型</b></span>
<br/>
使用OpenGL时建议使用OpenGL定义的原始类型。比如使用float时我们加上前缀GL因此写作GLfloat。intuintcharbool等等类似。OpenGL定义了这些GL原始类型的平台无关的内存排列方式。而int等原始类型在不同平台上可能有不同的内存排列方式。使用GL原始类型可以保证你的程序在不同的平台上工作一致。
</div>
!!! Important
**原始类型**
使用OpenGL时建议使用OpenGL定义的原始类型。比如使用float时我们加上前缀GL因此写作GLfloat。intuintcharbool等等类似。OpenGL定义了这些GL原始类型的平台无关的内存排列方式。而int等原始类型在不同平台上可能有不同的内存排列方式。使用GL原始类型可以保证你的程序在不同的平台上工作一致。
当我们使用一个对象时通常看起来像如下一样把OpenGL上下文比作一个大的结构体
@@ -109,9 +109,9 @@ OpenGL库是用C写的同时也支持多种语言的派生但是核心是
这一小片代码将会是以后使用OpenGl时常见的工作流。我们首先创建一个对象然后用一个id保存它的引用实际数据被储存在后台。然后我们将对象绑定至上下文的目标位置例子里窗口对象的目标位置被定义成GL\_WINDOW\_TARGET。接下来我们设置窗口的选项最后我们解绑这个对象通过将目标位置的对象id设回0。我们设置的选项被保存在objectId代表的对象中一旦我们重新绑定这个对象到GL\_WINDOW\_TARGET位置这些选项就会重新生效。
<div style="border:solid #E1B3B3;border-radius:10px;background-color:#FFD2D2;margin:10px 10px 10px 0px;padding:10px">
目前提供的示例代码只是OpenGL如何操作的一个大致描述通过教程你会遇到很多实际的例子。
</div>
!!! Attention
目前提供的示例代码只是OpenGL如何操作的一个大致描述通过教程你会遇到很多实际的例子。
使用对象的一个好事是我们在程序中可以定义不止一个对象设置他们的选项当我们需要进行一个操作的时候只需要绑定预设了需要的状态的对象。比如有作为3D模型数据一栋房子或一个人物容器对象的对象任何时候我们想绘制其中一个3D模型的时候只需绑定相应的含模型数据的对象我们预先创建并设置好了它们的选项。拥有数个这样的对象允许我们指定多个模型在想画其中任何一个的时候简单的将相应的对象绑定上去不需要进行重复的设置选项的操作。