简介
LearOpenGL(https://learnopengl.com),是一个学习OpenGL 3.x版本的技术网站,内容讲解简单通俗,内容几乎涵盖OpenGL初、中、高级技术。国内翻译组同仁已经将其完整翻译发布在Learn OpenGL CN(https://learnopengl-cn.readthedocs.io/zh/latest/)上。在学习的过程中遇到很多困难,好几次在作者的帮助下得以解决问题,在此将学习中遇到的细节和问题归纳总结,供后来者借鉴!
准备
1. 扩展库准备
GLFW -- https://www.glfw.org/download.html
GLEW -- http://glew.sourceforge.net/
GLM -- https://github.com/g-truc/glm (GLM 0.1~GLM 0.9.9.4) Readme部分
SOIL -- http://www.lonesock.net/soil.html / http://www.lonesock.net/files/soil.zip
Freetype -- https://www.freetype.org/ / https://www.freetype.org/download.html
irrKlang -- https://www.ambiera.com/irrklang/ / https://www.ambiera.com/irrklang/downloads.html
以下是我使用的各扩展库版本
01- glfw-3.2.1.bin.WIN32.zip OpenGL通用窗口扩展
02- glew-2.1.0-win32.zip OpenGL Extension Wrangler Library
03- glm-0.9.8.5.7z OpenGL数学库
04- soil.zip (July 7, 2008) Simple OpenGL Image Library
05- freetype-2.3.5-1-bin.zip
06- irrKlang-32bit-1.6.0.zip 音频解码库
2. 心理准备(随时掉坑里)
SOIL库须知:作者使用的SOIL库加载图片纹理显示为上下颠倒,因此采用(TexCoord = vec2(texCoord.x, 1.0 - texCoord.y);)方式将图片纹理调整为正常状态。但我使用的 soil.zip (July 7, 2008)无需此操作!
GLM库须知:(引用作者原话如下)
Since GLM version 0.9.9, GLM default initializates matrix types to a 0-initalized matrix, instead of the identity matrix. From that version it is required to initialize matrix types as: glm::mat4 mat = glm::mat4(1.0f). For consistency with the tutorials' code it's advised to use a version of GLM lower than 0.9.9 or initialize all matrices as mentioned above.
自GLM版本0.9.9起,GLM默认将矩阵类型初始化为0-initalized矩阵,而不是单位矩阵。 从该版本开始,需要将矩阵类型初始化为:glm::mat4 mat = glm::mat4(1.0f)。 为了与教程代码保持一致,建议使用低于0.9.9的GLM版本或初始化上述所有矩阵。
因此,要和作者提供的代码效果保持一致,请使用GLM Version 0.9.9.0以下版本!
实践
如果环境配置没有问题,而且跟随作者在"In practice / 2D Game / Breakout"步骤实现游戏,最后会有不错收获。