mirror of
https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git
synced 2025-08-23 12:45:29 +08:00
Update sytle guide
This commit is contained in:
@@ -15,7 +15,7 @@ OpenGL规范严格规定了每个函数该如何执行,以及它们的输出
|
||||
|
||||
实际的OpenGL库的开发者通常是显卡的生产商。你购买的显卡所支持的OpenGL版本都为这个系列的显卡专门开发的。当你使用Apple系统的时候,OpenGL库是由Apple自身维护的。在Linux下,有显卡生产商提供的OpenGL库,也有一些爱好者改编的版本。这也意味着任何时候OpenGL库表现的行为与规范规定的不一致时,基本都是库的开发者留下的bug。
|
||||
|
||||
!!! Important
|
||||
!!! important
|
||||
|
||||
由于OpenGL的大多数实现都是由显卡厂商编写的,当产生一个bug时通常可以通过升级显卡驱动来解决。这些驱动会包括你的显卡能支持的最新版本的OpenGL,这也是为什么总是建议你偶尔更新一下显卡驱动。
|
||||
|
||||
@@ -31,7 +31,7 @@ OpenGL规范严格规定了每个函数该如何执行,以及它们的输出
|
||||
|
||||
现今,更高版本的OpenGL已经发布(写作时最新版本为4.5),你可能会问:既然OpenGL 4.5 都出来了,为什么我们还要学习OpenGL 3.3?答案很简单,所有OpenGL的更高的版本都是在3.3的基础上,引入了额外的功能,并没有改动核心架构。新版本只是引入了一些更有效率或更有用的方式去完成同样的功能。因此,所有的概念和技术在现代OpenGL版本里都保持一致。当你的经验足够,你可以轻松使用来自更高版本OpenGL的新特性。
|
||||
|
||||
!!! Attention
|
||||
!!! attention
|
||||
|
||||
当使用新版本的OpenGL特性时,只有新一代的显卡能够支持你的应用程序。这也是为什么大多数开发者基于较低版本的OpenGL编写程序,并只提供选项启用新版本的特性。
|
||||
|
||||
@@ -78,7 +78,7 @@ struct object_name {
|
||||
};
|
||||
```
|
||||
|
||||
!!! Important
|
||||
!!! important
|
||||
|
||||
**基元类型(Primitive Type)**
|
||||
使用OpenGL时,建议使用OpenGL定义的基元类型。比如使用`float`时我们加上前缀`GL`(因此写作`GLfloat`)。`int`、`uint`、`char`、`bool`等等也类似。OpenGL定义的这些GL基元类型的内存布局是与平台无关的,而int等基元类型在不同操作系统上可能有不同的内存布局。使用GL基元类型可以保证你的程序在不同的平台上工作一致。
|
||||
@@ -110,7 +110,7 @@ glBindObject(GL_WINDOW_TARGET, 0);
|
||||
|
||||
这一小段代码展现了你以后使用OpenGL时常见的工作流。我们首先创建一个对象,然后用一个id保存它的引用(实际数据被储存在后台)。然后我们将对象绑定至上下文的目标位置(例子中窗口对象目标的位置被定义成`GL_WINDOW_TARGET`)。接下来我们设置窗口的选项。最后我们将目标位置的对象id设回0,解绑这个对象。设置的选项将被保存在`objectId`所引用的对象中,一旦我们重新绑定这个对象到`GL_WINDOW_TARGET`位置,这些选项就会重新生效。
|
||||
|
||||
!!! Attention
|
||||
!!! attention
|
||||
|
||||
目前提供的示例代码只是OpenGL如何操作的一个大致描述,通过阅读以后的教程你会遇到很多实际的例子。
|
||||
|
||||
|
Reference in New Issue
Block a user