OpenGL之配置GLFW

本文详细介绍如何配置GLFW库,包括直接下载预编译的二进制文件和自行编译源代码的方法,适用于不同需求的开发者。

转自 https://www.cnblogs.com/collectionne/p/6937644.html?utm_source=debugrun&utm_medium=referral


学OpenGL的都会知道,OpenGL只提供了绘图功能,创建窗口是需要自己完成的。这就需要学习相应操作系统的创建窗口方法,比较复杂,并且每个操作系统都不同。为简化创建窗口的过程,可以使用专门的窗口库,例如GLUT、GLFW等。由于GLUT已经是90年代的东西了(不过后来还有freeglut),而GLFW是新的,因此建议使用GLFW。

 

使用GLFW之前需要先进行配置,那怎么配置呢?本文将会介绍配置方法。

 

下载GLFW

 

进入GLFW官方网站glfw.org,点击右上角的download,看见如下界面:

 

 

这时,可以点击Windows pre-compiled binaries标题下面的32-bit Windows binaries或64-bit Windows binaries(此方法仅限Windows,且建议选择32-bit Windows binaries),下载已经编译好的binary。也可以点击Source package标题下面的Source package下载源代码自己编译。

 

配置

 

直接下载binary

 

点击32-bit Windows binaries进行下载(可能上不了,这时可以尝试刷新),这时浏览器下面会弹出下载提示。

 

下载之后,解压压缩包,得到的文件夹应如下:

 

 

选择适合自己编译器的库,将文件夹里的glfw3.dll、glfw3.lib和glfw3dll.lib拷贝到一个新文件夹,例如D:\libs\。使用时可以只使用glfw3.dll(静态链接),也可以使用glfw3dll.lib和glfw3.dll(动态链接)。结束。

 

编译源代码

 

下载的binary可能没有适合自己编译器的,这时就只能自己编译了。

 

点击Source package进行下载(可能上不了,这时可以尝试刷新),这时浏览器会弹出下载提示。

 

下载之后,解压压缩包,得到的文件夹应如下(只要有deps、include、src、CMakeLists.txt等文件或文件夹就可以了):

 

 

CMake

 

自己编译GLFW需要使用CMake。CMake是一个可以通过源代码生成相应编译器的项目文件的软件。进入CMake官方网站cmake.org,点击右上角的download进入下载页面:

 

 

建议选择最新版(目前是3.8.2)。找到Binary deistributions,选择适合自己平台的下载(可以选择Installer,也可以选择ZIP),我选择的是Windows win32-x86 Installer(虽然我电脑是64位)。注意,如果你电脑上有CMake 3.4或更早的版本,请卸载!

 

 

如果是下载ZIP,直接解压就可以用了;如果是Installer,则需要安装,点击下载的.msi文件,根据指示进行安装。安装完毕后,进入CMake所在文件夹:

 

 

进入bin文件夹,里面有cmake.exe和cmake-gui.exe两个文件。前者是控制台版的,后者是GUI版的。

 

生成项目文件

 

使用cmake-gui.exe

 

打开cmake-gui.exe,应出现如下界面:

 

 

在Where is the source code栏里,选择GLFW源代码所在目录(即前面的include、src等文件夹所在目录),我这里是D:/libs/glfw。

 

在Where to build the binaries栏里,选择要将项目文件生成在哪个文件夹里,可以不存在。我这里选择的是D:/libs/glfw/build。

 

 

点击Configure。如果有"Build directory does not exist, should I create it?"的提示,点击Yes。(以VS2015为例)

 

 

选择需要生成哪个编译器的项目文件。这里直接选择默认的。点击Finish。等待生成完毕,如果出现下列界面就成功了。

 

 

点击Generate,等待生成完毕。如果底下显示"Generating done"则生成成功。接下来可以直接点击Open Project,或找到生成的GLFW.sln(或者其它扩展名)手动打开。

 

使用cmake.exe

 

如果直接使用cmake.exe,安装CMake时默认没有将cmake.exe所在文件夹添加到PATH,因此需要设置PATH。打开命令行(Windows为Win+R输入cmd),使用下列指令:

 

set PATH=C:\Program Files (x86)\CMake\bin;%PATH%
cd glfw
md build cd build cmake ..

 

注意需要将cd glfw中的glfw换成GLFW源码所在的文件夹(和Where is the source code一样,但注意必须在C盘)。输入完以上指令后,在GLFW源码文件夹中出现了一个build文件夹,里面有GLFW的项目文件。

 

编译

 

 

现在只要编译就可以了,这一点各IDE大同小异。以VS2015为例,点击上面的生成,选择生成解决方案,等待编译完成。编译日志很长,一共有195行。

 

现在可以看一下,在build文件夹里,是不是出现了一个名为glfw3.lib的文件(VS2015在build/src/Debug目录下)。不过直接编译只能生成glfw3.lib,没有DLL,因此是静态链接。

 

Done!

 

使用GLFW

 

要使用GLFW,打开IDE,在包含路径(include directories)里加上glfw3.lib所在的路径,在附加依赖项(additional dependencies)里加上glfw3.lib,就可以使用GLFW啦!

### 配置 OpenGLGLFW 的方法 为了成功配置 OpenGLGLFW 并创建一个基本的应用程序,可以遵循以下指南来设置开发环境。此过程适用于 CLion IDE,并且假设读者已经安装了 CMake。 #### 安装依赖项 确保已安装必要的库和工具链,包括但不限于: - **CMake**: 构建系统管理器 - **GLFW**: 提供窗口管理和输入处理功能的库 - **GLEW 或 GLAD**: 用于加载 OpenGL 函数指针的扩展库 对于 Linux 用户来说,可以通过包管理器获取这些软件;Windows 用户可以从官方网站下载预构建版本[^1]。 #### 创建项目结构 建立一个新的 C++ 工程目录树如下所示: ``` project/ ├── CMakeLists.txt └── src/ ├── main.cpp └── shaders/ ├── vertex_shader.glsl └── fragment_shader.glsl ``` 其中 `main.cpp` 是应用程序入口点,而 `shaders/vertex_shader.glsl` 及其对应的片段着色器文件则包含了 GPU 上执行的具体逻辑[^2]。 #### 编写 CMake 文件 编辑根目录下的 `CMakeLists.txt` 来定义项目的编译规则: ```cmake cmake_minimum_required(VERSION 3.10) project(MyOpenGLProject) set(CMAKE_CXX_STANDARD 17) find_package(glfw3 REQUIRED) find_package(GLEW REQUIRED) # 如果使用 GLEW 而不是 GLAD add_executable(${PROJECT_NAME} "src/main.cpp") target_link_libraries(${PROJECT_NAME} glfw GLEW::GLEW) # 替换为 glad 若适用 ``` 这段脚本会告诉 CMake 如何找到所需的第三方库并将它们链接到最终可执行文件中去。 #### 初始化窗口并循环渲染场景 在 `main.cpp` 中加入初始化代码以及主事件循环部分: ```cpp #include <glad/glad.h> #include <GLFW/glfw3.h> int main() { // Initialize the library if (!glfwInit()) { return -1; } // Create a windowed mode window and its OpenGL context GLFWwindow* window = glfwCreateWindow(800, 600, "My OpenGL Window", NULL, NULL); if (!window) { glfwTerminate(); return -1; } // Make the window's context current glfwMakeContextCurrent(window); // Load all OpenGL function pointers using GLAD or similar loader. if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { return -1; } while (!glfwWindowShouldClose(window)) { glClear(GL_COLOR_BUFFER_BIT); // Clear screen with black color. // Render here... // Swap front and back buffers glfwSwapBuffers(window); // Poll for and process events glfwPollEvents(); } glfwDestroyWindow(window); glfwTerminate(); return 0; } ``` 上述代码展示了如何启动 GLFW 库、创建窗口对象及其关联的 OpenGL 上下文,并进入持续更新显示内容直到用户关闭应用为止的循环体内部。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值