mirror of
https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git
synced 2025-08-22 20:25:28 +08:00
Save the old tutorials somewhere else
This commit is contained in:
35
docs/legacy.md
Normal file
35
docs/legacy.md
Normal file
@@ -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 <GL/glew.h>
|
||||
```
|
||||
|
||||
如果你希望动态链接,那么你可以省略这个宏。但是记住使用动态链接的话你需要拷贝一份.DLL文件到你的应用程序目录。
|
||||
|
||||
!!! Important
|
||||
|
||||
对于用GCC编译的Linux用户建议使用这个命令行选项`-lGLEW -lglfw3 -lGL -lX11 -lpthread -lXrandr -lXi`。没有正确链接相应的库会产生 *undefined reference*(未定义的引用) 这个错误。
|
||||
|
||||
我们现在成功编译了GLFW和GLEW库,我们已经准备好将进入[下一节](03 Hello Window.md)去真正使用GLFW和GLEW来设置OpenGL上下文并创建窗口。记得确保你的头文件和库文件的目录设置正确,以及链接器里引用的库文件名正确。如果仍然遇到错误,可以先看一下评论有没有人遇到类似的问题,请参考额外资源中的例子或者在下面的评论区提问。
|
Reference in New Issue
Block a user