要为Ubuntu 20.04系统搭建OpenGL开发环境,首先确保安装必要的依赖。通过`apt-get`安装`libglfw3-dev`,这将为GLFW库提供基础支持。针对X11或Wayland系统,记得安装相应的图形库。接下来,从GitHub克隆GLFW的源码,以便进行本地构建:
```bash
git clone https://github.com/glfw/glfw.git
```
使用CMake构建GLFW,配置CMakeLists.txt文件,将GLFW的源代码目录指定为构建目标:
```cmake
cmake -S path/to/glfw -B build
cmake --build build
```
安装GLAD库时,访问官网下载包含头文件的include文件夹,将其移动到`/usr/local/include`,并将`glad.c`文件放置在你的项目目录中。在CMakeLists.txt中添加GLAD的链接,以确保其在编译时可用:
```cmake
find_package(GLFW REQUIRED)
find_package(GLAD REQUIRED)
include_directories(${GLAD_INCLUDE_DIRS})
add_executable(main main.cpp)
target_link_libraries(main glfw glad)
```
在`main.cpp`中,编写核心代码来初始化窗口、加载GLAD函数指针、创建和编译shader程序、设置顶点数组对象(VAO)和缓冲区(VBO),并进行基本的OpenGL渲染:
```cpp
// GLFW初始化
if (!glfwInit()) {
std::cerr << "Failed to initialize GLFW" << std::endl;
return -1;
}
// GLAD加载
if (!gladLoadGLLoader(glfwGetProcAddress)) {
std::cerr << "Failed to initialize GLAD" << std::endl;
glfwTerminate();
return -1;
}
// 创建顶点着色器和顶点数组对象
std::vector vertices = {...};
unsigned int VBO, VAO;
glGenVertexArrays(1, &VAO);
glGenBuffers(1, &VBO);
glBindVertexArray(VAO);
// 着色器程序和顶点数据
std::string vertexShaderSource = /*...*/;
std::string fragmentShaderSource = /*...*/;
// (编译、链接、设置顶点数据)
// 渲染循环
while (!glfwWindowShouldClose(window)) {
// 清空颜色缓冲,绘制三角形,交换双缓冲
// 处理用户输入和窗口回调
}
// 释放资源
glfwTerminate();
```
在这个过程中,我们引入了glm库,用于进行三维数学计算,如旋转180度。在CMakeLists.txt中添加对glm的依赖和链接:
```cmake
find_package(glm REQUIRED)
target_link_libraries(main ${GLM_INCLUDE_DIRS})
```
通过这些步骤,你将在Ubuntu 20.04上成功搭建一个基于GLFW和GLAD的OpenGL开发环境,实现窗口创建、基本渲染功能以及使用glm库进行数学运算。