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:
@@ -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)。int,uint,char,bool等等类似。OpenGL定义了这些GL原始类型的平台无关的内存排列方式。而int等原始类型在不同平台上可能有不同的内存排列方式。使用GL原始类型可以保证你的程序在不同的平台上工作一致。
|
||||
</div>
|
||||
|
||||
!!! Important
|
||||
|
||||
**原始类型**
|
||||
使用OpenGL时,建议使用OpenGL定义的原始类型。比如使用float时我们加上前缀GL(因此写作GLfloat)。int,uint,char,bool等等类似。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模型的时候,只需绑定相应的含模型数据的对象(我们预先创建并设置好了它们的选项)。拥有数个这样的对象允许我们指定多个模型,在想画其中任何一个的时候,简单的将相应的对象绑定上去,不需要进行重复的设置选项的操作。
|
||||
|
Reference in New Issue
Block a user