learnopengl glitter版
最近发现了一个优秀的图形学框架,Glitter。Glitter已经包含了新手学习图形学(openGL)需要的绝大部分框架,不需要再另行配置。
Glitter
Glitter简介
正如Glitter官网简介中的一样,Glitter是一个绝对简单的OpenGL模板,内部配置好了一切所需要的库。你唯一需要的外部软件就是cmake。
Glitter集成的库
Glitter默认集成的库如下
Functionality | Library |
---|---|
Mesh Loading | assimp |
Physics | bullet |
OpenGL Function Loader | glad |
Windowing and Input | glfw |
OpenGL Mathematics | glm |
Texture Loading | stb |
其中,glad作用是取代glew,std是SOIL的底层实现
Glitter使用教程
git clone --recursive https://github.com/Polytonic/Glitter
cd Glitter
cd Build
# UNIX Makefile
cmake ..
# Mac OSX
cmake -G "Xcode" ..
# Microsoft Windows
cmake -G "Visual Studio 14" ..
cmake -G "Visual Studio 14 Win64" ..
之后就可以使用自己习惯的IDE了。而clion用户的话,直接用clion打开Glitter根目录即可。
LearnOpenGL
LearnOpenGL简介
LearnOpenGL以及中文版,是一个非常优秀的OpenGL教程,由浅入深,从窗口绘制一直教到HDR,SSAO,PBR等高级技术,全教程坚持使用实例来演示,非常适合新人学习。
LearnOpenGL-Glitter版本
我自己用了10天不到的时间,把LearnOpenGL上的实例用Glitter框架重新实现了一遍,链接在这里。
Glitter使用时的一些注意事项
- 使用glad获取opengl函数
// Load OpenGL Functions
gladLoadGL();
std::cout << "OpenGL " << glGetString(GL_VERSION) << std::endl;
- 使用stb读取图片
#define STB_IMAGE_IMPLEMENTATION
int width, height;
unsigned char* image = stbi_load("wall.jpg", &width, &height, 0, 0);
stbi_image_free(image);
- 在mac上强制glfw使用版本向前兼容
// Mac 10.9以后OpenGL版本为祖传OpenGL4.1,不能改变
// 如果使用3.3或以下版本,需要兼容
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
- 在retina屏上设置viewport只占屏幕1/4
// 直接设置窗口分辨率是retina拉伸后的
// 而设置viewport的尺寸是retina拉伸前的
// 从帧缓冲中获取viewport尺寸是正确做法
int width, height;
glfwGetFramebufferSize(window, &width, &height);
glViewport(0, 0, width, height);