【OpenGL ES】Windows上OpenGL情况搭建

[复制链接]
发表于 2025-10-7 10:14:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1 前言

​    Windows 的图形 API 是 DirectX,对 OpenGL 的支持比力有限(体系自带的 opengl32.dll 仅支持 OpenGL 1.1 版本),因此在 Windows 上举行OpenGL 开发时,通常必要借助第三方库或工具来支持更高版本的 OpenGL 功能。
​    如今主流的方案 GLFW / freeglut + Glad / GLEW。此中 GLFW 和 freeglut 都是用于管理 OpenGL 上下文、窗口、输入的开源库,它们可以相互更换;Glad 和 GLEW 都是用于管理 OpenGL 函数指针加载的库(即 OpenGL 加载库),它们也可以相互更换。因此有 4 种搭配方式:GLFW + Glad、GLFW + GLEW、freeglut + Glad、freeglut + GLEW。
GLFW 和 freeglut 的区别如下。
特性GLFWfreeglut筹划目标当代轻量级上下文管理GLUT 兼容,教学 / 原型开发API 风格直接、机动回调驱动,固定流程OpenGL 工具无提供多少绘制等工具函数输入处置处罚直接访问输入状态通过回调机制Vulkan 支持是否多线程支持友爱有限实用场景高性能应用、游戏、Vulkan 项目教学、旧项目维护、快速原型​    Glad 和 GLEW 的区别如下。
特性GladGLEW天生方式通过在线天生器或工具天生定制代码预编译的通用库(支持大多数扩展)机动性高度机动(可选择 API 版本和扩展)相对固定(默认加载全部支持的扩展)维护状态活泼维护(当代 OpenGL 首选)维护较少(旧项目中利用较多)初始化需显式调用 gladLoadGL()需显式调用 glewInit()头文件仅需 glad/glad.h(单头文件)需 GL/glew.h + 链接库扩展控制天生时选择扩展,淘汰冗余默认加载全部扩展,大概冗余兼容性支持 OpenGL ES、Vulkan 等告急专注 OpenGL​    由上述对比可知,GLFW + Glad 是 4 种搭配方式中的最保举的搭配方式。
​    本文全部 Demo 的完备代码见 → Windows上 GLFW + Glad、GLFW + GLEW、freeglut + Glad、freeglut + GLEW 情况搭建。
2 情况搭建

​    本节将先容 GLFW、freeglut、Glad、GLEW 的情况搭建,用户可以根据运行搭配情况,选择部门依靠库搭建到本身的项目中。
​    为了让项目具有更好的兼容性和跨平台特性,本文基于 CMake 举行情况搭建。起首创建一个项目目次 glDemo,接着在 glDemo 中创建一个子目次 thirdParty,用于存放三方库文件,在 thirdParty 中创建 bin、include、lib、src 目次,分别用于存放二进制文件(.dll)、头文件(.h / .hpp)、库文件(.lib)、源文件(.c / .cpp),如下。
  1. glDemo
  2.   └─thirdParty
  3.       ├─bin
  4.       ├─include
  5.       ├─lib
  6.       └─src
复制代码
2.1 GLFW 情况搭建

​    打开网站 https://www.glfw.org/download.html,点击以下按钮下载。

​    glfw-3.4.bin.WIN64.zip 的内容如下。

​    将 include 下面的全部文件复制到 thirdParty/include 中,将 lib-vc2022/glfw3.lib 复制到 thirdParty/lib/GLFW 中,复制后的目次结构如下。
  1. glDemo
  2.   └─thirdParty
  3.       ├─include
  4.           │    └─GLFW
  5.       └─lib
  6.            └─GLFW
  7.                 └─glfw3.lib
复制代码
​    如果用户想本身编译源码,可以去 https://github.com/glfw/glfw/releases 中下载源码,如 glfw-3.4.zip。

​    解压后在根目次创建 build 目次,在 build 目次中创建 install 目次,用 CMake 设置如下。

​    进入 build 目次中,双击 GLFW.sln 文件,会主动用 Visual Studio 打开项目,右键 ALL_BUILD,点击天生;再右键 INSTALL,点击天生。

​    在 install 目次下面会天生以下文件,将 include 下面的全部文件复制到 thirdParty/include 中,将 lib/glfw3.lib 复制到 thirdParty/lib/GLFW 中。

2.2 freeglut 情况搭建

​    打开网站 https://freeglut.sourceforge.net/index.php#download,点击以下按钮下载。用户也可以去 github 上下载(https://github.com/freeglut/freeglut/releases)。

​    freeglut-3.6.0.tar.gz 的内容如下。

​    解压后在根目次创建 build 目次,在 build 目次中创建 install 目次,用 CMake 设置如下。

​    进入 build 目次中,双击 freeglut.sln 文件,会主动用 Visual Studio 打开项目,右键 ALL_BUILD,点击天生;再右键 INSTALL,点击天生。

​    由于 freeglut 的 Debug 和 Release 版本天生的资源定名不一样,为了让项目可以或许在 Debug 和 Release 版本都能运行,必要将分别选择 Debug 和 Release 版本,都按照上述步调天生一遍。

​    在 install 目次下面会天生以下文件,带 d 后缀的文件(如:freeglutd.dll、freeglut_staticd.lib)是 Debug 版本的。

​    将 include 下面的全部文件复制到 thirdParty/include 中,将 lib 下面的 freeglut.lib 和 freeglutd.lib 复制到 thirdParty/lib/freeglut 中,将 bin 下面的 freeglut.dll 和 freeglutd.dll 复制到 thirdParty/bin/freeglut 中,复制后的目次结构如下。
  1. glDemo
  2.   └─thirdParty
  3.       ├─bin
  4.           │    └─freeglut
  5.       │         ├─freeglut.dll
  6.       │         └─freeglutd.dll
  7.       ├─include
  8.           │    └─GL
  9.       └─lib
  10.            └─freeglut
  11.                 ├─freeglut.lib
  12.                 └─freeglutd.lib
复制代码
2.3 Glad 情况搭建

​    打开网站 https://glad.dav1d.de/,根据必要举行设置,笔者的设置如下。

​    设置完后点击底部的【GENERATE】按钮,下载 glad.zip。

​    glad.zip 的内容如下。

​    将 include 下面的全部文件复制到 thirdParty/include 中,将 src 下面的全部文件复制到 thirdParty/src/glad 中,复制后的目次结构如下。
  1. glDemo
  2.   └─thirdParty
  3.       ├─include
  4.           │    ├─glad
  5.           │    └─KHR
  6.       └─src
  7.                      └─glad
  8.                 └─glad.c
复制代码
2.4 GLEW 情况搭建

​    打开网站 https://glew.sourceforge.net/,点击以下按钮下载。用户也可以去 github 上下载(https://github.com/nigels-com/glew/releases),但是必要本身编译源码。

​    glew-2.1.0-win32.zip 的内容如下。

​    将 include 下面的全部文件复制到 thirdParty/include 中,将 lib/Release/x64/glew32s.lib 复制到 thirdParty/lib/GLEW 中,复制后的目次结构如下。
  1. glDemo
  2.   └─thirdParty
  3.       ├─include
  4.           │    └─GL
  5.       └─lib
  6.            └─GLEW
  7.                 └─glew32s.lib
复制代码
3 运行搭配

3.1 GLFW + Glad 搭配

​    项目目次结构如下。

​    CMakeLists.txt
  1. # 项目要求的最小CMake版本
  2. cmake_minimum_required(VERSION 3.12)
  3. # 声明项目名, 可以通过${PROJECT_NAME}访问, 在顶层CMakeLists.txt中, 也可以通过${CMAKE_PROJECT_NAME}访问
  4. project("glDemo")
  5. # 设置C++版本号
  6. set(CMAKE_CXX_STANDARD 17)
  7. message("BUILD TYPE: ${CMAKE_BUILD_TYPE}")
  8. # 头文件目录列表 (便于以该路径为相对路径访问头文件)
  9. include_directories(./thirdParty/include)
  10. link_directories(./thirdParty/lib/GLFW)
  11. # 源文件列表 (相对于当前CMakeLists.txt的路径)
  12. file(GLOB_RECURSE SOURCES
  13.     "thirdParty/src/**/*.c"
  14.     "main.cpp")
  15. message("source: ${SOURCES}")
  16. # 添加可执行目标
  17. add_executable(${CMAKE_PROJECT_NAME} ${SOURCES})
  18. # 添加链接的三方库文件
  19. target_link_libraries(${CMAKE_PROJECT_NAME}
  20.     glfw3)
复制代码
​    main.cpp
[code]#include #include #include using namespace std;// 窗口尺寸厘革回调函数void resizeCallback(GLFWwindow* window, int width, int height){        cout
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表