LearnOpenGL笔记|VScode搭建开发环境
本教程默认你在vscode上已经有了CMake+MinGW+C++的开发环境,我们将在此基础上搭建OpenGL的开发环境。文章末尾会给出已经配置好的环境。
什么是OpenGL?
在配置开发环境前先介绍一下OpenGL是什么:OpenGL(Open Graphics Library)是一个跨平台、跨语言的应用程序编程接口(API)。
- OpenGL委员会提供了一系列的函数,让开发者可以直接调用这些函数来绘制图形,而不需要关心底层的硬件细节。也就是说,OpenGL是一个抽象层,隐藏了不同GPU之间的差异,使得开发者可以用统一的接口来编程。这样,无论用户使用的是NVIDIA还是AMD的显卡,程序都能正常运行。
- OpenGL是一个非常大的状态机,即他有非常多的属性可以被我们设置,我们通过设置属性的方式来绘制图形。
- 由于大多数系统并不能支持直接在屏幕上绘制图形,所以我们需要一个库能够管理与创建窗口,以使得我们在窗口中绘制图形。
- OpenGL的函数在运行时由显卡驱动提供,不同驱动版本支持的函数可能不同。所以我们为了编码的方便也会使用一个库来动态管理不同显卡驱动版本的函数,避免手动加载函数指针。
准备
上述我们提到OpenGL并不是一个库,只是一个API接口,不同的显卡产商需要根据自家的显卡编写自己的OpenGL函数,我们可以直接通过更复杂的方式调用显卡中的函数,但是不方便,所以我们需要使用一个库来,避免我们手动加载函数指针这里我们使用GLAD。还有一点我们不能直接在显示器上绘制图形我们需要通过一个库来创建窗口,在窗口上绘制图形这里我们使用GLFW。由于在计算机图形学中我们会用到大量数学运算,所以我们需要一个数学库,这里我们使用GLM。
开始
使用vscode创建如下目录结构
OpenGL
│ CMakeLists.txt
│
├─bin
│ glfw3.dll
│ imgui.ini
│
├─include
│ ├─GLAD
│ │ ├─glad
│ │ │ glad.h
│ │ │
│ │ └─KHR
│ │ khrplatform.h
│ │
│ ├─GLFW
│ │ glfw3.h
│ │ glfw3native.h
│ │
│ └─glm
│ ├─detail
│ ├─ext
│ ├─gtc
│ ├─gtx
│ └─simd
│ └─......
│ └─......
├─libs
│ └─GLFW
│ └─lib-mingw-w64
│ libglfw3.a
│ libglfw3dll.a
│
└─src
│ main.cpp
│
└─GLAD
glad.c
项目根目录下创建CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(OpenGL)
set(INCLUDE_DIR ./include/GLAD/
./include/)
include_directories(${INCLUDE_DIR})
file(GLOB_RECURSE SOURCE_FILE ./src/*.cpp
./src/GLAD/glad.c )
add_executable(${PROJECT_NAME} ${SOURCE_FILE})
set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin/)
set(GLFW_LIB ${PROJECT_SOURCE_DIR}/libs/GLFW/lib-mingw-w64/libglfw3dll.a)
target_link_libraries(${PROJECT_NAME} PRIVATE ${GLFW_LIB})
结束
已搭建好的环境Github