# start-learning-opengl **Repository Path**: wanghui999999/start-learning-opengl ## Basic Information - **Project Name**: start-learning-opengl - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-19 - **Last Updated**: 2025-08-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

start-learning-opengl

learnopengl-cn 学习示例 --> IDE:vscode

示例截图

02_hello_triangle 02_hello_triangle 03_hello_triangle_exercise 04_shader_glsl_01 04_shader_glsl_02 05_shader_class
07_load_texture 08_load_texture_exercise 09_transform 10_use_plane_geometry 11_use_sphere_geometry 12_use_box_geometry
13_model_view_projection 14_use_image_ui 15_mvp_matrix_exercise 16_use_camera 17_use_camera_class 18_light_scene
19_basic_lighting 20_light_material 21_light_map 22_light_map_exercise 23_direction_light 24_point_light
25_spot_light 26_multiple_lights 27_load_model 28_depth_testing 29_stencil_testing 30_blending
31_face_culling 32_frame_buffers 33_cube_maps 34_env_mapping 35_advanced_glsl 36_geometry_shader
37_instancing 38_anti_aliasing 39_blinn_phong 40_gamma_corre 41_shadow_mapping 42_point_shadow
43_normal_mapping 43_normal_tangent 44_parallax_mapping 45_heigh_dynamic_range 46_bloom 47_deferred_shading
48_ssao_shading 49_pbr_light 49_pbr_light 50_diffuse_ibl 51_specular_ibl 51_specular_ibl

windows 下 vscode 配置 OpenGL 开发环境

## 参考 - windows 需安装 MinGW, install gcc、g++、gdb 和 mingw32-make 并 进入到 `MinGW\bin` 文件夹下 把 mingw32-make.exe 修改成 make.exe > [MinGW](https://sourceforge.net/projects/mingw/) 不要下载 *MinGW-w64*因为后面可能会出现问题 > MinGW,即 Minimalist GNU For Windows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用 GCC 产生 Win32 程序。 - vscode 插件 [`C/C++`](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools)、[`C/C++ Project Generator`](https://marketplace.visualstudio.com/items?itemName=danielpinto8zz6.c-cpp-project-generator) - glfw 下载 [`Windows pre-compiled binaries`](https://www.glfw.org/download.html) > 选择**Windows pre-compiled binaries**,因为我们使用的 MinGW 所以选择 [32-bit Windows binaries](https://github.com/glfw/glfw/releases/download/3.3.4/glfw-3.3.4.bin.WIN32.zip) > 对于 Ubuntu,通过 `sudo apt install libglfw3-dev libglfw3` 安装 glfw - glad [在线服务](https://glad.dav1d.de/) 生成静态库 ``` > gcc ./src/glad.c -c -I ./include/ // 生成 .o文件 > ar -rc libglad.a glad.o // 生成我们所需要的 .a文件 ``` > 将生成的 libglad.a 复制到 lib 文件下 - glm 复制到 include 目录下 - imgui 复制到 include 目下,Makefile 中添加以下命令 ```mk # define the C source files SOURCES := $(wildcard $(patsubst %,%/*.cpp, $(SOURCEDIRS))) SOURCES += include/imgui/imgui_impl_glfw.cpp include/imgui/imgui_impl_opengl3.cpp SOURCES += include/imgui/imgui.cpp include/imgui/imgui_demo.cpp include/imgui/imgui_draw.cpp include/imgui/imgui_widgets.cpp ``` - assimp 下载已编译好的文件 [Assimp3-1-1_MinGW4-8-1_Win32.zip](https://www.mediafire.com/file/jjiv41rv8euy3dt/Assimp3-1-1_MinGW4-8-1_Win32.zip/file) > 对于 Ubuntu,通过 `sudo apt install libassimp-dev` 安装 assimp - [参考 Makefile 文件](https://github.com/yocover/start-learning-opengl/blob/main/Makefile) ## 示例 ### 1. Run 和 Clean **测试代码** ```c++ #include #include #include void framebuffer_size_callback(GLFWwindow *window, int width, int height); void processInput(GLFWwindow *window); const unsigned int SCR_WIDTH = 800; const unsigned int SCR_HEIGHT = 600; int main() { glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); GLFWwindow *window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL); if (window == NULL) { std::cout << "Failed to create GLFW window" << std::endl; glfwTerminate(); return -1; } glfwMakeContextCurrent(window); glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { std::cout << "Failed to initialize GLAD" << std::endl; return -1; } while (!glfwWindowShouldClose(window)) { processInput(window); glfwSwapBuffers(window); glfwPollEvents(); } glfwTerminate(); return 0; } void processInput(GLFWwindow *window) { if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) glfwSetWindowShouldClose(window, true); } void framebuffer_size_callback(GLFWwindow *window, int width, int height) { glViewport(0, 0, width, height); } ``` **执行命令 run 编译和运行.exe 程序** ```Bash make run dir=01_test_glfw ``` **执行命令 clean 删除 .exe 和对应文件夹下的.o 文件** ```Bash make clean dir=01_test_glfw ``` ### 2. Debug 需要设置调试一个文件 修改 `tasks.json`下面的条目 ```js "label": "build", "type": "shell", "group": { "kind": "build", "isDefault": true }, "windows": { "command": "powershell", "args": [ "-c", "make dir=01_test_glfw", // 调式 01_test_glfw/main.cpp ] }, ```