[OpenGL]GLSL Cookbook源码编译步骤流程
keywords: OpenGL GLSL Cookbook源码编译步骤流程
以下文章内容是基于glslcookbook所在github上2017年8月份的提交版本,当前文章所述的配置glm和glfw的步骤与github上最新CMakeLists.txt已不再适用!
针对2018.06的github代码,我新增了文章:
[OpenGL]GLSL Cookbook源码编译步骤流程(2018.06新版)
如果是萌新,建议先把当前旧文章看完再看新文章。
这里讲解《OpenGL 4 Shading Language Cookbook, Second Edition》 这本书的示例代码如何编译。
编译步骤
1,下载glm的源码,并用cmake-gui生成出VisualStudio的工程文件。
https://github.com/g-truc/glm/releases
2,下载glfw。
https://github.com/glfw/glfw/releases
注意是下载bin文件不是src源码。(如果你想用src编译lib,则无视)
3,下载glslcookbook源码,这是《OpenGL 4 Shading Language Cookbook, Second Edition》的书籍源码,下载后同样用cmake-gui生成vs工程文件: https://github.com/daw42/glslcookbook
4,cmake-gui首次生成glshcookbook源码时会报错 这时需要指定GLM的依赖库位置,这个位置就是步骤1中的生成的GLM库的bin目录。注意这个bin目录不是GLM自带的,是通过cmake-gui指定生成的。
在指定GLM_INCLUDE_DIR之后,再点击Generate,又会出现新的错误,提示GLFW找不到,这时需要再指定GLFW的相关目录,即步骤2中下载的GLFW lib和头文件。
参数解释:
- CMAKE_BUILD_TYPE :默认,不做修改
- CMAKE_CONFIGURATION_TYPES :默认,不做修改
- CMAKE_INSTALL_PREFIX :不清楚,删掉也不影响
- GLFW3_INCLUDE_DIR :GLFW的头文件目录
- GLFW3_LIBRARY :GLFW的静态库目录
- GLM_INCLUDE_DIR :GLM的头文件目录
最后生成成功的提示为:
打开VS工程,可以看到每一章的示例代码并可编译。(这里看不到.sln的图标是因为我电脑之前卸载了旧版本的vs,导致新版本vs的图标显示不正常,可以无视)
运行程序
每个章节的exe无法双击运行,需要命令输入相关参数。 以章节5为例,先CD到exe所在目录:
cd /d D:\glslcookbook\bin\chapter05\Debug>
然后输入:
chapter05.exe
则会提示:
Recipe names:
blur : Gaussian blur
deferred : deferred rendering
edge : edge detection filter
gamma : gamma correction
msaa : multisample anti-aliasing
tone-map : tone mapping example.
hdr-bloom: bloom example with HDR tone mapping.
oit : order independent transparency
然后再CD上一层目录(因为程序中使用了相对路径:chapter05/shader,如果cd到Debug目录则会提示找不到这些shader)
cd ..
然后执行(以hdr-bloom为例):
start Debug/chapter05.exe hdr-bloom
程序运行效果
相关错误:
1,之前在用源码生成GLFW库时,cmake老报一个错误:
CMake Error at CMakeLists.txt:6 (find_package):
Could not find a package configuration file provided by "glm" with any of
the following names:
glmConfig.cmake
glm-config.cmake
Add the installation prefix of "glm" to CMAKE_PREFIX_PATH or set "glm_DIR"
to a directory containing one of the above files. If "glm" provides a
separate development package or SDK, be sure it has been installed.
Configuring incomplete, errors occurred!
See also "D:/glslcookbook_bin/CMakeFiles/CMakeOutput.log".
原因:我电脑上之前用cmake-gui构建了几个不同目录的GLFW,可能导致GLFW的路径指向错误。
解决办法:删除之前构建的GLFW库,新建一个目录重新生成GLFW库。
2,64位编译错误
64位模式下,会提示找不到uint符号
解决办法:将uint替换为GLuint。
纵使相逢应不识,尘满面,鬓如霜。夜来幽梦忽还乡。小轩窗,正梳妆。----北宋·苏轼《江城子·乙卯正月二十日夜记梦》