【OpenGL】LearnOpenGL教程:学习注意事项以及工程搭建

简介

 

LearnOpenGL(Learn OpenGL, extensive tutorial resource for learning Modern OpenGL),是一个学习OpenGL 3.x版本的技术网站,内容讲解简单通俗,内容几乎涵盖OpenGL初、中、高级技术。国内翻译组同仁已经将其完整翻译发布在Learn OpenGL CN(LearnOpenGL-CN)上,代码托管在“GitHub - JoeyDeVries/LearnOpenGL: Code repository of all OpenGL chapters from the book and its accompanying website https://learnopengl.com”。在学习的过程中遇到很多困难,好几次在作者的帮助下得以解决问题,在此将学习中遇到的细节和问题归纳总结,供后来者借鉴!

中文翻译版:LearnOpenGL CN
配套视频:大名鼎鼎的Learn OpenGL的视频教程(中英字幕)_哔哩哔哩_bilibili

准备

1. 扩展库准备

GLFW  --  Download | GLFW

GLEW  --  GLEW: The OpenGL Extension Wrangler Library

GLM     --  GitHub - g-truc/glm: OpenGL Mathematics (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  --  The FreeType Project    /   FreeType Downloads

irrKlang    --   irrKlang - audio and sound library for C++, C# and .NET    /  download irrKlang

glad         --   https://glad.dav1d.de/    /  https://pan.baidu.com/s/1uEhS0LrDlWdsfW0DdOxKjA  提取码:6ylq 

stb_image -- https://github.com/nothings/stb  /  https://pan.baidu.com/s/1V02zLpa159WezqXQc6d3iQ 提取码:jtwr 

以下是我使用的各扩展库版本
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        音频解码库
07- glad                       继GL3W,GLEW之后,当前最新的用来访问OpenGL规范接口的第三方库    
08- std_image          一个简单易用的图像解码库

01~08所列包分享:链接: https://pan.baidu.com/s/1eU1nY99-RPCx7xNAi7Wsjg 提取码: ujt3 

安装完毕后我的目录结构:

D:.
├─bin
├─include
│  ├─freetype
│  │  └─freetype2
│  │      └─freetype
│  │          └─config
│  ├─GL
│  ├─GLFW
│  ├─glm
│  │  ├─detail
│  │  ├─gtc
│  │  ├─gtx
│  │  └─simd
│  ├─irrKlang
│  └─SOIL
└─lib
    ├─freetype
    │  └─pkgconfig
    ├─GLEW
    ├─GLFW
    ├─irrKlang
    └─SOIL

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以下版本!

Freetype库须知:

  /* `<prefix>/include/freetype2' must be in your current inclusion path */
#include <freetype/config/ftheader.h>

glad库须知:

按上图选择后,点击“GENERATE”生成下载,跳转到下载页面后,点击“glad.zip”下载。

如果项目工程在链接中提示:

1>main.obj : error LNK2001: unresolved external symbol __imp____glewAttachShader
1>main.obj : error LNK2001: unresolved external symbol __imp____glewCreateProgram
1>main.obj : error LNK2001: unresolved external symbol __imp____glewShaderSource
1>main.obj : error LNK2001: unresolved external symbol __imp____glewCreateShader

原因是“glew32s.lib”和“glew32.lib”不一样,在用了“glad.lib”情况下需要使用“glew32.lib”。

实践

如果环境配置没有问题,而且跟随作者在"In practice / 2D Game / Breakout"步骤实现游戏,最后会有不错收获。Demo下载地址:

作者Breakout项目源码:
链接:https://pan.baidu.com/s/1GOK0Iwqau8Mxo6AmMdCggA 
提取码:dhte 

基于作者Breakout项目源码的完整工程:
链接:https://pan.baidu.com/s/1X2SNVKonX5idjs5LC8giyA 
提取码:ouqc 

附录:

FreeType是一个能够用于加载字体并将他们渲染到位图以及提供多种字体相关的操作的软件开发库。它是一个非常受欢迎的跨平台字体库,被用于 Mac OSX、Java、PlayStation主机、Linux、Android等。FreeType的真正吸引力在于它能够加载TrueType字体。

TrueType字体不采用像素或其他不可缩放的方式来定义,而是一些通过数学公式(曲线的组合)。这些字形,类似于矢量图像,可以根据你需要的字体大小来生成像素图像。通过使用TrueType字体可以轻易呈现不同大小的字符符号并且没有任何质量损失。

FreeType可以在他们的官方网站中下载到。你可以选择自己编译他们提供的源代码或者使用他们已编译好的针对你的平台的链接库。请确认你将freetype.lib添加到你项目的链接库中,同时你还要添加它的头文件目录到项目的搜索目录中。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值