按照Cherno的OpenGL教程编写的源码,英语不好的同学建议参考B站的翻译视频来学习。
说明:源码仅在Windows10系统下,使用VS2019经验证编译通过。
使用CMake构建工程。
源码的序号与视频教程的编号一致。
Setting up OpenGL and Creating a Window in C++
GLFW是一个开放源码的、多平台的库,用于在桌面上开发OpenGL、OpenGL ES和Vulkan。它提供了一个简单的API来创建窗口、上下文和渲染表面,接收输入和事件。可以在这里下载源码,本工程使用的是3.3.8版本的GLFW静态库。
编好的库位于 /dependencies/glfw 文件夹下。
Using Modern OpenGL in C++
OpenGL Extension Wrangler Library(GLEW)是一个跨平台的开源C/C++扩展加载库。GLEW提供了高效的运行时机制,用于确定目标平台支持哪些OpenGL扩展。在这里下载编好的库,本工程使用的是2.1.0版本的GLEW库。
编好的库位于 /dependencies/glew 文件夹下。
Vertex Buffers and Drawing a Triangle in OpenGL
Vertex Attributes and Layouts in OpenGL
Writing a Shader in OpenGL
How I Deal with Shaders in OpenGL
Index Buffers in OpenGL
Uniforms in OpenGL
Vertex Arrays in OpenGL
Abstracting OpenGL into Classes
Buffer Layout Abstraction in OpenGL
Shader Abstraction in OpenGL
Writing a Basic Renderer in OpenGL
Textures in OpenGL
Blending in OpenGL
从第19节开始,需用到OpenGL Mathematics (GLM) ,它是一个仅包含头文件的C++数学库。
源码位于 /vendor/glm 目录下。
Projection Matrices in OpenGL
Model View Projection Matrices in OpenGL
ImGui in OpenGL
本人使用ImGui的1.89.4版本。从这里下载ImGui,并将ImGui的部分源码拷贝到我们的工程里,位于 /vendor/imgui 目录。
需拷贝的文件有ImGui根目录下的所有.h和.cpp文件,以及backends目录下imgui_impl_glfw、imgui_impl_opengl3相关的几个文件。
Rendering Multiple Objects in OpenGL