From 6ee7a87860e6fbbbca8f360ef322a1996302474d Mon Sep 17 00:00:00 2001 From: Meow J Date: Fri, 16 Jun 2017 20:56:48 +0800 Subject: [PATCH] Save the old tutorials somewhere else --- .../02 Creating a window.md | 6 +++- docs/legacy.md | 35 +++++++++++++++++++ mkdocs.yml | 1 + 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 docs/legacy.md diff --git a/docs/01 Getting started/02 Creating a window.md b/docs/01 Getting started/02 Creating a window.md index e066b34..43e26e8 100644 --- a/docs/01 Getting started/02 Creating a window.md +++ b/docs/01 Getting started/02 Creating a window.md @@ -4,7 +4,11 @@ ---|--- 作者 | JoeyDeVries 翻译 | gjy_1992 -校对 | Geequlim +校对 | 未校对 + +!!! note "译注" + + 注意,由于作者对教程做出了更新,之前本节使用的是GLEW库,但现在改为了使用GLAD库,关于GLEW配置的部分现在已经被修改,但我仍决定将这部分教程保留起来,放到一个历史存档中,如果有需要的话可以到[这里](../legacy.md)来查看。 在我们画出出色的效果之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样的,OpenGL有目的地从这些操作抽象(Abstract)出去。这意味着我们不得不自己处理创建窗口,定义OpenGL上下文以及处理用户输入。 diff --git a/docs/legacy.md b/docs/legacy.md new file mode 100644 index 0000000..6f839b5 --- /dev/null +++ b/docs/legacy.md @@ -0,0 +1,35 @@ +# 历史存档 + +由于作者在对教程不断地更新,一些比较旧的内容就从教程中删除或者修改了,但是这部分内容仍然对在更新以前就开始学习的读者可能还是会有点用处的。所以,我会将被大段删除或修改的内容留到这里以供大家参考。 + +注意的是,一些比较小的改动将不会出现在这里。 + +## 01-02 创建窗口 + +### 编译和链接GLEW + +GLEW是OpenGL Extension Wrangler Library的缩写,它能解决我们上面提到的那个繁琐的问题。因为GLEW也是一个库,我们同样需要构建并将其链接进工程。GLEW可以从[这里](http://glew.sourceforge.net/index.html)下载,你同样可以选择下载二进制版本,如果你的目标平台列在上面的话,或者下载源码编译,步骤和编译GLFW时差不多。记住,如果不确定的话,选择32位的二进制版本。 + +我们使用GLEW的**静态**版本**glew32s.lib**(注意这里的“s”),将库文件添加到你的库目录,将**include**内容添加到你的include目录。接下来,在VS的链接器选项里加上**glew32s.lib**。注意GLFW3(默认)也是编译成了一个静态库。 + + +!!! Important + + **静态**(Static)链接是指编译时就将库代码里的内容整合进你的二进制文件。优点就是你不需要管理额外的文件了,只需要发布你单独的一个二进制文件就行了。缺点就是你的可执行文件会变得更大,另外当库有升级版本时,你必须重新进行编译整个程序。 + + **动态**(Dynamic)链接是指一个库通过`.dll`或`.so`的方式存在,它的代码与你的二进制文件的代码是分离的。优点是使你的二进制文件大小变小并且更容易升级,缺点是你最终发布程序时必须带上这些DLL。 + +如果你希望静态链接GLEW,必须在包含GLEW头文件之前定义预处理器宏`GLEW_STATIC`: + +```c++ +#define GLEW_STATIC +#include +``` + +如果你希望动态链接,那么你可以省略这个宏。但是记住使用动态链接的话你需要拷贝一份.DLL文件到你的应用程序目录。 + +!!! Important + + 对于用GCC编译的Linux用户建议使用这个命令行选项`-lGLEW -lglfw3 -lGL -lX11 -lpthread -lXrandr -lXi`。没有正确链接相应的库会产生 *undefined reference*(未定义的引用) 这个错误。 + +我们现在成功编译了GLFW和GLEW库,我们已经准备好将进入[下一节](03 Hello Window.md)去真正使用GLFW和GLEW来设置OpenGL上下文并创建窗口。记得确保你的头文件和库文件的目录设置正确,以及链接器里引用的库文件名正确。如果仍然遇到错误,可以先看一下评论有没有人遇到类似的问题,请参考额外资源中的例子或者在下面的评论区提问。 \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index e494910..0baed28 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -74,6 +74,7 @@ pages: - 音效: '06 In Practice/2D-Game/09 Audio.md' - 渲染文本: '06 In Practice/2D-Game/10 Render Text.md' - 结语: '06 In Practice/2D-Game/11 Final thoughts.md' + - 历史存档: 'legacy.md' site_name: 'LearnOpenGL CN'