计算机图形学 | 搭建OpenGL环境

OpenGL学习笔记【2】——开发环境配置(GLFW,VS,Cmake),创建第一个项目 GLFW是配合 OpenGL 使用的轻量级工具程序库,缩写自 Graphics Library Framework(图形库框架)。GLFW 的主要功能是创建并管理窗口和 OpenGL 上下文,同时还提供了处理手柄、键盘、鼠标输入的功能。GLFW是用C语言编写的,GLEW 是对底层 OpenGL 的接口的封装,可以让开发者的代码跨平台,支持Windows,macOS,X11和Wayland。 阅读详情

华中科技大学《计算机图形学》课程

MOOC地址:计算机图形学(HUST)

搭建OpenGL环境

GLFW

构建GLFW

GLFW是一个OpenGL的C语言库,它提供了渲染物体所需要的最低限度的接口,它允许用户创建OpenGL上下文,定义窗口参数以及用户的输入。

简单来说,GLFW是对之前固定管线常用的GLUT的一种改进。

GLFW可以从它官方网站的下载页上获取。我们需要下载源代码包。

在这里插入图片描述

下载源码包之后,将其解压并打开。我们只需要里面的这些内容:

  • 编译生成的库
  • include文件夹

从源代码编译库可以保证生成的库是兼容你的操作系统和CPU的,而预编译的二进制文件可能会出现兼容问题(甚至有时候没提供支持你系统的文件)。提供源代码所产生的一个问题在于不是每个人都用相同的IDE开发程序,因而提供的工程/解决方案文件可能和一些人的IDE不兼容。所以人们只能从.c/.cpp和.h/.hpp文件来自己建立工程/解决方案,这是一项枯燥的工作。但因此也诞生了一个叫做CMake的工具。

CMake

CMake是一个工程文件生成工具。用户可以使用预定义好的CMake脚本,根据自己的选择(像是Visual Studio, Code::Blocks, Eclipse)生成不同IDE的工程文件。这允许我们从GLFW源码里创建一个Visual Studio 2015工程文件,之后进行编译。首先,我们需要从官方网站下载安装CMake。我选择的是x86安装程序。

在这里插入图片描述

当CMake安装成功后,你可以选择从命令行或者GUI启动CMake,由于我们不想让事情变得太过复杂,我们选择用GUI。

在这里插入图片描述

CMake需要一个源代码目录和一个存放编译结果的目标文件目录。源代码目录我们选择GLFW的源代码的根目录,然后我们新建一个 build 文件夹,选中作为目标目录。

在这里插入图片描述

运行cmake-gui:

在这里插入图片描述

在设置完源代码目录和目标目录之后,点击Configure(设置)按钮,让CMake读取设置和源代码。我们接下来需要选择工程的生成器,由于我们使用的是Visual Studio 2015,我们选择 Visual Studio 14 2015 选项(因为Visual Studio 2015的内部版本号是14)。

在这里插入图片描述
CMake会显示可选的编译选项用来配置最终生成的库。这里我们使用默认设置,并再次点击Configure(设置)按钮保存设置。保存之后,点击Generate(生成)按钮,生成的工程文件会在你的build文件夹中。

在这里插入图片描述

在这里插入图片描述

此时,再次点击Generate(生成)按钮:

在这里插入图片描述

可以看到GLFW.sln已生成:

在这里插入图片描述

编译

在build文件夹里可以找到GLFW.sln文件,用Visual Studio 2015打开。因为CMake已经配置好了项目,所以我们直接点击Build Solution(生成解决方案)按钮,然后编译的库glfw3.lib(注意我们用的是第3版)就会出现在src/Debug文件夹内。

在这里插入图片描述

在这里插入图片描述
库生成完毕之后,我们需要让IDE知道库和头文件的位置。有两种方法:

  1. 找到IDE或者编译器的/lib和/include文件夹,添加GLFW的include文件夹里的文件到IDE的/include文件夹里去。用类似的方法,将glfw3.lib添加到/lib文件夹里去。虽然这样能工作,但这不是推荐的方式,因为这样会让你很难去管理库和include文件,而且重新安装IDE或编译器可能会导致这些文件丢失。
  2. 推荐的方式是建立一个新的目录包含所有的第三方库文件和头文件,并且在你的IDE或编译器中指定这些文件夹。我个人会使用一个单独的文件夹,里面包含Libs和Include文件夹,在这里存放OpenGL工程用到的所有第三方库和头文件。这样我的所有第三方库都在同一个位置(并且可以共享至多台电脑)。然而这要求你每次新建一个工程时都需要告诉IDE/编译器在哪能找到这些目录。

完成上面步骤后,我们就可以使用GLFW创建我们的第一个OpenGL工程了!

我们的第一个工程

首先,打开Visual Studio 2015,创建一个新的项目。如果VS提供了多个选项,选择Visual C++,然后选择Empty Project(空项目)(别忘了给你的项目起一个合适的名字)。现在我们终于有一个空的工作空间了,开始创建我们第一个OpenGL程序吧!

链接

为了使我们的程序使用GLFW,我们需要把GLFW库链接(Link)进工程。这可以通过在链接器的设置里指定我们要使用glfw3.lib来完成,但是由于我们将第三方库放在另外的目录中,我们的工程还不知道在哪寻找这个文件。于是我们首先需要将我们放第三方库的目录添加进设置。

要添加这些目录(需要VS搜索库和include文件的地方),我们首先进入Project Properties(工程属性,在解决方案窗口里右键项目),然后选择VC++ Directories(VC++ 目录)选项卡(如下图)。在下面的两栏(Include Directories包含目录和Library Directories库目录)添加目录:

在这里插入图片描述

这里你可以把自己的目录加进去,让工程知道到哪去搜索。你需要手动把目录加在后面,也可以点击需要的位置字符串,选择选项,之后会出现类似下面这幅图的界面,图是选择Include Directories(包含目录)时的界面:

在这里插入图片描述

这里可以添加任意多个目录,IDE会从这些目录里寻找头文件。所以只要你将GLFW的Include文件夹加进路径中,你就可以使用<GLFW/…>来引用头文件。库目录也是同样。

注:我图省事直接添加GLFW的include文件夹里的文件到IDE的/include文件夹,所以省去了上述步骤。

现在VS可以找到所需的所有文件了。

最后需要在Linker(链接器)选项卡里的Input(输入)选项卡里添加glfw3.lib这个文件:

在这里插入图片描述

要链接一个库我们必须告诉链接器它的文件名。库的文件名是glfw3.lib,我们把它加到Additional Dependencies(附加依赖项)字段中(手动或者使用选项都可以)。这样GLFW在编译的时候就会被链接进来了。

GLFW的安装与配置就到此为止。

GLAD

到这里还没有结束,我们仍然还有一件事要做。因为OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。所以任务就落在了开发者身上,开发者需要在运行时获取函数地址并将其保存在一个函数指针中供以后使用。取得地址的方法因平台而异,代码非常复杂,而且很繁琐,我们还需要对每个可能使用的函数都要重复这个过程。幸运的是,有些库能简化此过程,其中GLAD是目前最新,也是最流行的库。

接下来我们来介绍一下如何配置GLAD库,GLAD是一个开源的库,它能解决我们上面提到的那个繁琐的问题。GLAD的配置与大多数的开源库有些许的不同,GLAD使用了一个在线服务。在这里我们能够告诉GLAD需要定义的OpenGL版本,并且根据这个版本加载所有相关的OpenGL函数。

打开GLAD的在线服务,将语言(Language)设置为C/C++,在API选项中,选择3.3以上的OpenGL(gl)版本(我们的教程中将使用3.3版本,但更新的版本也能正常工作)。之后将模式(Profile)设置为Core,并且保证生成加载器(Generate a loader)的选项是选中的。现在可以先(暂时)忽略拓展(Extensions)中的内容。都选择完之后,点击生成(Generate)按钮来生成库文件。

在这里插入图片描述

GLAD现在应该提供给你了一个zip压缩文件,包含两个头文件目录,和一个glad.c文件。

在这里插入图片描述

将两个头文件目录(glad和KHR)复制到你的Include文件夹中(或者增加一个额外的项目指向这些目录),并添加glad.c文件到你的工程中。

在这里插入图片描述

经过前面的这些步骤之后,你就应该可以将以下的指令加到你的文件顶部了:

#include <glad/glad.h>
OpenGL编程指南-freeglut安装(Windows平台) 书中使用GLUT作为示例代码的演示,GLUT于1998年作者不在维护并不开源,freeglut是一个完美的代替方案。这里freeglut使用的是Release+x64,而我的示例代码中使用Release+x86,导致“无法解析外部符号”错误。将install文件夹下的内容,放到示例代码sln文件同级目录下的3rdparty/freeglut目录下。注意事项:一定要确保生成的freeglut平台及配置与示例代码一致。这里的安装路径就是在Cmake中配置的cmake_install_prefix的路径。 阅读详情

相关推荐

计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 01.环境搭建

将下载的OpenGLtemplate.zip 解压到 C:\OpenGLtemplate,也可放在其它目录下。创建一个自定义的项目模板,以便在 Visual Studio 中快速创建预配置的项目。通过这种方式,开发者可以避免重复配置项目环境,例如添加依赖库、设置编译选项等。// 附加依赖项 输入以下内容 glfw3 . lib采用 C++ 17标准在实际项目运行时,需要将glew32.dll放在可执行文件所在目录下。

weixin_44539328的博客 904

opengl环境搭建

建一个文件夹,把上面下载的两个包都放到这个文件夹,并解压。在开始本篇教程之前,先介绍一篇opengl中文教程。下面开始画一个随着时间不断变化颜色的三角形。下面开始打开vs,新建一个项目。FR:徐海涛(hunkxu)opengl中文教程网站。下面代码是打开一个窗口。

海涛高软 1024

【Unity技术专题】Learning OpenGL 与计算机图形学

https://learnopengl.com/ Learning OpenGL中文版 Learning OpenGL GitBook地址 Unity官方图形学教程 Unity 灯光与渲染相关 深入GPU硬件架构及运行机制 在VS2013下如何配置DirectX SDK的开发环境 【游戏开发】基于VS2017的OpenGL开发环境搭建 高清晰渲染管线HDRP入门指南 【计算机图形学】计算机图形学中的坐标系统 Unity轻量渲染管线(LWRP)民间文档 分享收集的WebGL 3D学习资源

yhx956058885的博客 370

OpenGL环境搭建

openGL初学环境搭建详细步骤

dl15600383645的博客 879

深入计算机图形学:OpenGL源码解析与实践

本文还有配套的精品资源,点击获取 简介:计算机图形学是信息技术的关键分支,涉及图像的生成、处理和显示。OpenGL是一个跨语言、跨平台的API,用于渲染2D和3D图形,广泛应用于游戏开发、科学可视化和工程设计等领域。本源码包重点关注第12章,包括Emissive Ray Tracer和012_bump_mapping的内容。Emissive Ray Tracing是一种光线...

weixin_36235398的博客 935

openGL的安装与使用详细过程

搭建图形学编程环境的详细步骤,可以使用VS2015或者VC++6.0均可以进行图形学编程。windows 对 openGL 的支持直到 1.1,而如今 openGL 版本已经更新到4.5,为了使用高版本的 API,需要安装拓展库(glew)。 openGL 只是个渲染系统,但是它不能产生窗口,需要依赖其它窗口服务,这里普遍用 glut。为了使用 OpenGL,必须采用三个库及相关文件。 OpenGL 核心库,它提供 OpenGL 的基本函数。每个函数都以 GL 开头; OpenGL 实用库(GL Utility Library),glu 库,提供简单形状的实用函数 等。每个函数都以 glu 开头。 OpenGl 实用工具包库(Utility Toolkit),glut 库。它主要用来打开窗口、 开发和管理菜单,以及管理事件等,函数前缀使用 glut 通常一个库在 windows 平台,由三个文件组成,一个头文件(.h),一个库 文件(.lib)和一个动态链接库文件(.dll)。

VS2022的openGL环境搭建(计算机图形学)

OpenGL配置指南摘要:本文详细介绍了在VS2022中配置OpenGL开发环境的完整流程。包括GLUT的安装(头文件、库文件及动态链接库的配置)、GLFW的安装(64位版本选择及目录设置)以及GLAD的在线服务配置方法。重点说明了各组件在VS2022中的路径配置细节,并提供了测试代码框架验证安装是否成功。通过将相关文件放置到指定系统目录和VS项目目录,并正确设置项目依赖关系,最终实现OpenGL开发环境的搭建。成功配置后,测试项目应能编译运行并显示空白窗口。

Tongzz1的博客 262

前端埋点的实践

1、前言 开始正文前先介绍一下埋点的概念~,(熟悉的朋友可以略过) 前端埋点: 是一种手段,它的目的是上报相关行为数据,相关人员以数据为依据来分析产品在用户端的使用情况,根据分析出来的结果辅助产品优化、迭代。 BI:商业智能,公司内部做数据分析相关的部门。 2、背景 在流量红利逐渐消失的现在,数据的采集、分析和精细化的运营显得更加重要,所以埋点的需求在互联网产品中是很常见的,目的上面也提到了。我们的追求就是又快又好的做好埋点工作,但是现实却不那么美好;目前我们团队在前端埋点方面存在一些痛点: 在构造埋点字段

Arui_0的博客 1773

《计算机图形学》第一课笔记-----opengl开发环境搭建

之前是准备使用vscode搭建的,但是阅读了一些教程后感觉太繁琐了,我的核心目标是学习计算机图形学,理解3D变换的算法,所以选了用Visual Studio搭建,过程很简单,只需要安装两个包即可。:x86平台 win11。

weixin_42485732的博客 452

强化学习入门8—深入理解DDPG

本文是强化学习入门系列的第八篇,前面我们讲Actor-Critic时提到了DDPG。DDPG是google DeepMind团队提出的一种用于输出确定性动作的算法,它解决了Actor-Critic 神经网络每次参数更新前后都存在相关性,导致神经网络只能片面的看待问题这一缺点。同时也解决了DQN不能用于连续性动作的缺点。

小菜羊的博客 4319

【智能车学习】电磁循迹中的基本控制算法

今天心血来潮,突然想总结一下电磁车的一些基本算法,也希望可以给新手同学们一点帮助和参考。本篇主要讲述智能车电磁循迹中涉及到的基本算法,包括滤波算法,归一化算法,PID控制等

Carry_qing的博客 6万+

计算机图形学——openGL的环境搭建

计算机图形学——openGL的环境搭建 这学期选了一门计算机图形学的专业选修课,于是写下这篇博客,记录一下学习内容。 一、openGL搭建 1. 环境:win10 64位 CodeBlocks 2. 所需文件(glut.h/glut32.dll/glut32.lib) 3. 存放位置(win10 64位 CodeBlocks安装在F盘) glut32.dll存放在C:\Windows\SysW...

Nicholas_hzf的博客 888

基于ASP.NET+SQLServer的美妆网站的设计与实现

通过本次ASP.NET MVC美妆商城项目的开发,我们实现了一个功能完善、性能稳定的在线购物平台。该项目不仅提升了用户的购物体验,也为商家提供了一个高效的商品管理和销售渠道。未来,我们将持续优化系统功能,提升用户体验,以适应不断变化的市场需求。

毕业设计大牛哥 1502

【OpenGL】计算机图形学入门实践:从环境搭建到基础图形绘制全解析

本文为计算机图形学初学者提供了一份详尽的OpenGL入门实践指南。从选择OpenGL的理由讲起,手把手指导在Visual Studio或Code::Blocks中搭建实验环境,并深入解析了从点、线到面的基础图形绘制原理。通过实战案例,演示了如何绘制线条、填充多边形、函数曲线以及实现简单动画,帮助读者快速掌握OpenGL核心概念与图形绘制技能。

weixin_29248313的博客 261

Windows 11“此应用已被管理员阻止运行”解决方案

通过本文介绍的两种方法,你应该能够解决Windows 11中“此应用已被管理员阻止运行”的问题。无论你选择创建新管理员账户还是禁用管理员批准模式,都请确保了解相关操作的风险,并根据你的实际需求做出选择。通过禁用“用户账户控制:以管理员批准模式运行所有管理员”设置,可以解决因系统安全设置导致的应用程序被阻止运行的问题。这种方法适用于那些希望简化管理员账户操作流程的用户,但需要注意可能带来的安全风险。通过创建并登录具有管理员权限的新账户,可以解决因系统安全设置导致的应用程序被阻止运行的问题。

mmoo_python的博客 1万+

解决WSL2网络隔离:Ubuntu子系统共享Windows代理的3种方法

本文详细解析了WSL2的网络隔离特性,并提供了三种在Ubuntu子系统中共享Windows代理的实用方法:环境变量法、配置文件法和系统服务法。通过具体代码示例和方案对比,帮助开发者快速解决WSL2网络访问问题,实现一键设置代理,提升开发效率。

weixin_29295541的博客 452

计算机图形学(二) OpenGL介绍&开发环境搭建

OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。OpenGL支持多种编程语言绑定,如C、C++、Java、JavaScript(通过WebGL)等,并且可以在Windows、UNIX、Linux、MacOS等多种操作系统平台上运行。

qq_38303267的博客 2757

A算法的蒙特卡洛树搜索

A*算法的蒙特卡洛树搜索 作者:禅与计算机程序设计艺术 1. 背景介绍 在人工智能和游戏开发领域,搜索算法是一个非常重要的研究方向。其中A算法和蒙特卡洛树搜索是两种广泛应用的经典算法。A算法是一种启发式搜索算法,通过评估各个节点到目标节点的启发式代价来引导搜索方向,在

AI天才研究院 1755

计算机图形学之opengl

OpenGL(Open Graphics Library,开放图形库)是一个跨语言、跨平台的应用程序编程接口(API),主要用于渲染2D、3D矢量图形。它由近350个不同的函数调用组成,可用于绘制从简单的图形到复杂的三维景象。OpenGL规范由Khronos Group制定并维护,该组织由对创建一个统一的、普遍可用的API感兴趣的公司组成。

weixin_41150257的博客 959

YOLOv8改进策略【注意力机制篇】| CVPRW-2024 分层互补注意力混合层 H-RAMi 针对低质量图像的特征提取模块

许多证据表明层次化网络对图像恢复(IR)任务通常不太有效,因为IR的目标是逐个预测像素值(密集预测),而缩小特征图会丢失重要的像素级信息。然而,层次化结构有降低时间复杂度以及学习语义级和像素级特征表示的优点。为了弥补缺点并利用优点,设计了H - RAMi层。

Limiiiing的博客 379

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

探索视觉艺术的奥秘:OpenGL在计算机图形学中的奇妙之旅

探索视觉艺术的奥秘:OpenGL在计算机图形学中的奇妙之旅 【下载地址】计算机图形学OpenGL实验源码实验文档 本仓库提供了一系列关于计算机图形学中使用OpenGL进行实验的源码和实验文档。这些实验涵盖了从基础的开发环境搭建到复杂的光照模型和纹理映射等多个方面,旨在帮助学习者深入理解OpenGL的使用和计算机图形学的核...

gitblog_09806的博客 757

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

[OpenGL]Final Project & 3D room-开发环境配置-计算机图形学

20年秋南航计算机图形学魏老师,其布置的作业需要用到Opengl,下面简单介绍环境搭建 3D room 小作业 按照老师提供的参考文件readme.txt, copy all the .dll files in dll folder to c:/windows/system32 copy all the .h files in gl folder to vc/include/gl (if no gl folder, create a folder named gl) copy all the .lib fi

东皇太一在此的博客 1345

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

macbook m2上搭建OpenGL项目:GLFW 和 GLEW 配置指南

最近在研究OpenGL这个库,进而学习学习关于计算机图形学相关的知识。本文主要介绍的是关于在Mac m系列下的环境搭建问题。其他的例如win或者Linux环境的搭建,请参考对应的文章。

陶陶name 1209

《计算机图形学编程(使用OpenGL和C++)》环境配置文件

《计算机图形学编程(使用OpenGL和C++)》环境配置文件 去发现同类优质开源项目:https://gitcode.com/ 本仓库提供了《计算机图形学编程(使用OpenGL和C++)》所需的环境配置文件,旨在帮助读者快速搭建开发环境,顺利开展图形学编程学习。 文件包含以下内容: 开发环境搭建指南 OpenGL和C++环境配置教程 示例程序及源代码 请根据提供的教程,逐步完成环境配置,开启您...

gitblog_06726的博客 324

《3D计算机图形学(OpenGL版)》电子书:开启3D图形编程之旅

《3D计算机图形学(OpenGL版)》电子书:开启3D图形编程之旅 【下载地址】3D计算机图形学OpenGL版电子书 《3D计算机图形学(OpenGL版)》是一本深入探讨计算机图形学核心技术的专业书籍,特别聚焦于OpenGL编程。书中全面介绍了3D图形学的基础理论、图形渲染管线、光照与纹理映射、几何变换及动画制作等关键内...

gitblog_06732的博客 734
上一篇: 计算机图形学 | 可编程渲染管线
下一篇: 计算机图形学 | 实验一:绘制一个窗口
UestcXiye
博客等级 码龄8年 9032粉丝 1306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值