使用Visual Studio一劳永逸式配置OpenGL开发环境(GLFW3+GLAD)

OpengGL教程(一)---OpenGL环境的配置(GLFW3,GLAD) OpenGL环境配置 阅读详情

引子

OpenGL版本众多,需要引入额外的第三方库才能很好的满足我们平时渲染的需求,对于刚开始学习的同学们比较麻烦。
我也多次遇到很多落后的配置教程,浪费了时间不说,也会自己技术和现代OpenGL的技术脱节。
在当前的时间点(2018年),学习OpenGL如果还从glBegin()和glEnd()那一套就太落伍了,这个教程是为了示范如何配置OpenGL3.3以上的环境。
另外推荐学习OpenGL的教程:LearnOpenGL,可能需要翻墙,有中文翻译版。
如果你想快速的开始学习OpenGL,这里有配置好的环境:(直接使用VS2015及以上版本打开,Win7/10实测均可)
超链接:资源
(目录结构中用到的所有的头文件、lib、dll也都在该链接中)

目录结构

我们配置的这个环境不光是只负责存放代码和第三方lib,还有一些shader文件和资源文件,因此需要构建一个良好的目录结构。

配置完整的目录结构如下:

文件名备注
src存放代码
external\include第三方库的头文件,包含stb_image.h, glad.h, glfw.h ,assimp.h等
external\lib第三方库的lib
external\dll第三方库的dll
resources资源文件夹,里面包括image,model,audiod等文件夹
vsbuild项目文件夹,表示一个vs项目,打开该目录下的vsbuild.sln即可

重点介绍一下external\include下的文件夹

  • glm OpenGL的数学库,定义了很多关于向量、矩阵的操作,简洁迅速。
  • glfw 跨平台的对窗口资源的一个抽象库。
  • glad 针对不同的显卡驱动有不同的OpenGL实现,glad帮助我们隐藏这些差别欢快的使用OpenGL。
  • stb_image 轻量级的读取图片的库
  • assimp 轻量级读取模型的库

可以说,我们包含了除了物理引擎和声音控制的所有常用组件。

现在我们从头开始构造这个目录结构。
首先找一个空白的文件夹,在其中新建如下目录结构:

这里写图片描述
这里我们不创建vsbuild,而是由vs来帮我们完成这件事情。
打开Visual Studio,新建一个空项目,项目名称为vsbuild,项目的地址为创建src、resources、external的同级目录:

这里写图片描述

创建完毕后:

这里写图片描述

接下来我们就要配置lib、include引入到我们的项目中。

右键vsbuild项目,打开属性页面:
这里写图片描述

找到C/C++ Genral
这里写图片描述
(注意,仅当你新建一个.cpp文件之后才会出现C/C++选项)
编辑右侧的附加目录:

这里写图片描述

注意 SolutionDir 是一个宏,表示的是vsbuild所在的目录,那么根据相对路径我们可以找到external\include。
(键入的信息是 $(SolutionDir)..\external\include)。

同理,选中Linker的General的附加库目录

这里写图片描述

打开编辑:

这里写图片描述

此外,还要打开Linker的Input的目录,输入下面的值:

这里写图片描述

这里写图片描述

表示我们需要
glfw3.lib
glad.lib
stb_image.lib
assimp.lib
这四个库,而这四个库的目录是在 $(SolutionDir)..\external\lib
(这里我把glad和stb_image编译成了静态库)
最后,因为assimp需要动态链接,我们需要把相应的dll引入到我们的项目中。
最简便的方法如下:

这里写图片描述

选中调试,编辑环境条目:

这里写图片描述

这行字符串的含义是在调试模式下,将external\dll目录临时添加到环境变量中,这样我们就可以成功的动态链接了。

在配置完毕后,粘贴下面的代码到Source.cpp,运行。

#include <glad\glad.h>
#include <glfw\glfw3.h>
#include <iostream>


void framebuffer_size_callback(GLFWwindow* window, int width, int height);

void processInput(GLFWwindow *window);



// settings

const unsigned int SCR_WIDTH = 800;

const unsigned int SCR_HEIGHT = 600;



int main()

{

    // glfw: initialize and configure

    // ------------------------------

    glfwInit();

    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);

    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);

    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);



#ifdef __APPLE__

    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // uncomment this statement to fix compilation on OS X

#endif



                                                         // glfw window creation

                                                         // --------------------

    GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);

    if (window == NULL)

    {

        std::cout << "Failed to create GLFW window" << std::endl;

        glfwTerminate();

        return -1;

    }

    glfwMakeContextCurrent(window);

    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);



    // glad: load all OpenGL function pointers

    // ---------------------------------------

    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))

    {

        std::cout << "Failed to initialize GLAD" << std::endl;

        return -1;

    }



    // render loop

    // -----------

    while (!glfwWindowShouldClose(window))

    {

        // input

        // -----

        processInput(window);



        // render

        // ------

        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);

        glClear(GL_COLOR_BUFFER_BIT);



        // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)

        // -------------------------------------------------------------------------------

        glfwSwapBuffers(window);

        glfwPollEvents();

    }



    // glfw: terminate, clearing all previously allocated GLFW resources.

    // ------------------------------------------------------------------

    glfwTerminate();

    return 0;

}



// process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly

// ---------------------------------------------------------------------------------------------------------

void processInput(GLFWwindow *window)

{

    if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)

        glfwSetWindowShouldClose(window, true);

}



// glfw: whenever the window size changed (by OS or user resize) this callback function executes

// ---------------------------------------------------------------------------------------------

void framebuffer_size_callback(GLFWwindow* window, int width, int height)

{

    // make sure the viewport matches the new window dimensions; note that width and 

    // height will be significantly larger than specified on retina displays.

    glViewport(0, 0, width, height);

}

最后显示出如下窗口说明你配置成功了。

OpenGL基础教程 阅读详情

相关推荐

vscode配置OpenGL开发环境【详细】

vscode配置OpenGL开发环境【详细】

weixin_43952192的博客 3万+

VisualStudio安装GLFW3全过程笔记

最后,右键项目依次点击 Project Properties => Configuration Properties => Linker => Input => Additional Dependencies。这里我们要复制对应Visual Studio版本的lib路径,比如我这里使用的版本是Visual Studio 2022,所以要复制lib-vc2022文件夹的路径。找到64位版本进行下载,注意这里的版本必须和你开发的软件的版本对应,否则无法运行,我这里开发64位软件,所以下载安装64位。

大数据流浪法师的学习笔记与分享 1370

VS2019配置OpenGL(glad + glfw + glm + SDL)

目录1. 安装Visual Studio20192. OpenGL安装2.1 各种库的区别2.2 安装cmake2.3 配置glfw2.3 配置glad2.4 配置VS3. 测试 1. 安装Visual Studio2019 直接官网安装community版,选择安装以下功能。 2. OpenGL安装 2.1 各种库的区别 glut (OpenGL Utility Toolkit) OpenGL工具库 OpenGL Utility Toolkit。OpenGL的基本库,但是很久不更新了,版本太老,不推荐

almost_afei的博客 6358

glfw3安装流程

glfw3安装流程 文章目录glfw3安装流程下载glfw3安装(适用于Ubuntu、mingw) 下载glfw3 下载地址 安装(适用于Ubuntu、mingw) $unzip glfw-3.3.3.zip $cd glfw-3.3.3/ $cmake

从善若水的博客 6694

Win10 OpenGL安装及配置

Win10 VS22 OpenGL环境安装配置

weixin_52049271的博客 1万+

Windows环境下OpenGL开发环境的配置,Win10+vs2019+GLFW+GLAD

1. 第一步进行GLFW库的配置,查了很多教程都选择直接在网站上下载GLFW源码,然后用CMake程序进行编译,但不知为什么我的在编译过程中总是出错,所以最后放弃这种方式,选择直接在网站上下载【64-bit Windows预编译的二进制文件】,如下图 下载之后将里面的include文件和相对应版本的库文件(因为我的是vs2019)lib-vc2019复制出来,放在一个固定的位置(新建一个文件...

m0_37931967的博客 7069

Visual studio2022 利用glfw+glad配置OpenGL环境

终于在visual studio 2022 中配置好了openGL环境!

QiuSilv的博客 5664

Visual Studio 2017配置OpenGL开发环境(GLFW + GLAD)

这学期我开始学习计算机图形学,需要使用OpenGL,在这里简单记录如何在Visual Studio中配置OpenGL的开发环境,其中GLFW和GLAD的头文件和库见github仓库。 GLFW OpenGL提供了图形渲染接口,而GLFW提供了窗口以及用户输入接口。因为我们在绘制图形之前要先创建一个用于显示的窗口,所以我们需要使用GLFW。 在Visual Studio中建立GLFW环境需要指定包含...

GoldenSpace 1708

VS2019+OpenGL配置:绘制3维图

文章目录1. 准备工作1.1 查看OpenGL版本1.2 Windows上的OpenGL库1.3 建一个文件夹OpenGL1.4 创建一个新项目OpenGLMFCTest2. GLFW2.1 下载和配置2.2 验证3. GLAD3.1 下载和配置3.2 验证4. GLM4.1 下载和配置4.2 验证5. GLUT5.1 下载和配置5.2 验证6. GLEW6.1 下载和配置6.2 验证7. 实例演示Debug+x64版Release+x64版 最近需要在MFC上面画3维图,记录一下配置OpenGL库的过程。

WaitFoF 7693

OpenGL 环境配置教程-库文件汇总【glfw/glew/glad/glm/std_img】

OpenGL 环境配置教程-库文件汇总【glfw/glew/glad/glm/std_img】

cycler_725的博客 5741

配置GLFW和GLAD,使用OpenGL

VS2019配置GLFW和GLAD

dyk4ever的博客 1682

Opengl+GLFW+GLAD+Visual Studio 配置

学习计算机图形学的朋友们基础到的第一个图形库因该就是Opengl,毕竟Opengl相对DirectX和Valuken要简单不少。但是Opengl这个库当中的函数到底应该如何调用,成了很多朋友们学习路上的拦路虎,再次笔者就交大家如何配置第三方库来调用Opengl当中的函数。

qq_45651072的博客 2488

GLFW3-Tutorials:我的 GLFW3 使用教程的代码

GLFW3 教程 我关于使用 GLFW3 的教程的代码。 教程 1:多窗口教程 源代码。 本教程展示了如何使用 GLFW3 和 GLEW MX 获得多脉冲窗口。 额外:多线程演示 这段代码是我为将线程添加到教程 1 中的代码所做的一些尝试。这个想法是让每个窗口在单独的线程上运行。

OpenGL+Visual Studio2022+GLFW+glad详细配置教程

OpenGL+Visual Studio2022+GLFW+glad详细配置教程

qq_18855997的博客 7493

【学习笔记】《基于φ-OTDR的分布式扰动传感系统定位算法研究-北交-通信与信息系统-吴》重点笔记

一、绪论 1.1 引言 光纤传感器的优点:跟电子传感器相比较,光纤传感器有诸多独特的优势:对电磁干扰免疫;具有很好的绝缘性和耐腐蚀性;灵敏度高,可测量微弱信息;可实现大范围监测和分布式传感,仅需一根传感光纤,更为经济便捷;传感光纤体积小、重量轻、可形变,适用于一些特殊应用场所;还有无需供电、耐高温、便于组网等等优点 光纤传感器的感知信号的方法:当探测光入射到光纤中时会发生散射并产生各种散射光...

qq_36045093的博客 2万+

电磁仿真新手必看:如何用CST Studio Suite 2023完成第一个PCB辐射仿真?

本文详细解析了如何使用CST Studio Suite 2023进行PCB辐射仿真,适合电磁仿真新手快速上手。从工程准备、求解器配置到端口设置和后处理技巧,全面覆盖三维全波电磁场仿真软件的核心操作步骤,帮助工程师精准预测和解决PCB电磁辐射问题。

y7z8a9的博客 734

VS配置OpenGL开发环境:GLFW库和GLAD库的配置

VS配置OpenGL开发环境:GLFW库和GLAD库的配置实例

Bruce_wjh的博客 2万+

比较几款国际主流的电子元器件及物料清单管理软件 – 工具汇总

Arenasolution 老牌的基于云计算物料清单管理软件,bom.com就是他们家的,10天免费试用,功能被分成4个不同的产品, 和传统ERP功能上有重叠,偏向于物流生产规划,一定程度可以取代ERP的生产规划模块,平均价格70美元/月/席位。网页客户端,不支持离线   SiliconExpert 曾经的老牌物料清单管理软件,后被Arrow 收购,14天免费试用,功能被分成4个不同的产品

u012062784的专栏 7236

Visual Studio 2019 + GLFW + GLAD

参考文章:https://blog.youkuaiyun.com/zjz520yy/article/details/82989067 https://www.bilibili.com/read/cv183332/ https://blog.youkuaiyun.com/sigmarising/article/details/80470054 vs2019下载地址https://visualstudio.microsof...

Moliay的博客 5170

数字后端设计实现 | 数字后端PR工具Innovus中如何创建不同高度的row?

数字IC后端设计实现之innovus中如何创建不同高度的row?

weixin_37584728的博客 3163

TEM图像处理实战指南:从基础操作到金属材料分析

本文提供了一份全面的透射电镜(TEM)图像处理实战指南,涵盖从基础操作到金属材料深度分析的全流程。重点讲解了TEM图像预处理、选区电子衍射(SAED)标定、高分辨像(HRTEM)分析及STEM图像应用等核心技能,并结合金属材料(如铝合金、钢)的析出相鉴定、位错分析和界面结构研究等实际案例,帮助研究者从原始数据中准确提取晶体结构、缺陷及成分信息。

weixin_29284201的博客 211

opengl 开发之 visual studio 开发环境简单配置(nupengl/glew/glfw/glad)

opengl 开发的一些知识整理,方便后期遇到类似的问题,能够及时查阅使用。本节介绍, opengl 使用 visual studio 进行开发,开发时的基础环境配置,主要的 C++ 环境,和 opengl 的包配置。如果有不足之处,欢迎指出,或者你有更好的方法,欢迎留言。OpenGL(英语:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。这个接口由近350个不同的函数调用组成,用来绘制从简单的图形比特到复杂的三维景象。

仙魁XAN 4856

【WLAN】【测试】WPS测试方法小结

手机 一般稍微老的手机会支持,新手机反而不支持。 比如小米6(系统版本新的话不支持)在设置——高级设置——WPS连接。 笔记本 有些笔记本(如Surface Laptop 3)天生支持WPS,比如在连接某SSID的时候,会有“也可以通过按路由器上的按钮连接”这样的字样,出来后按AP的WPS按键即可以进行连接。 Qss软件 AP mesh组网中,Controller和Agent之间通过WIFI组网,可使用WPS的方式进行连接。可利用这点用Agent来测试AP的WPS功能。 ...

一介草民,只为生活。 1万+

OpenGL 开发环境配置(Windows) - Visual Studio 2017 + GLFW + GLAD 详细教程

OpenGL环境配置一般选择Win32,因此本教程将搭载Win32平台的开发环境。 OpenGL开发环境配置目录搭建环境配置步骤Step1. 下载编译好的GLFW库Step2. 下载GLAD库Step3. 配置Visual Studio工程其他问题 目录 搭建环境 操作系统:Windows 10 编译器:Visual Studio 2017 GLAD库 GLFW库 配置步骤 S...

绿洲守望者 5468

税务某局 webpack 登录接口逆向分析

我们再回到接口逻辑去看一下,发现每次请求前,还有两个接口,getpublickey和sendsm4,这里分析了一下调用逻辑,sm4这个接口用到一个参数是由publickey返回的一个参数而来,这个参数又经过内部加密处理,我们找到这个参数加密的地方,大概是在这个位置。我们还是顺着逻辑将加载器扣下来,然后用一个变量去接收,有了加载器,我们直接把加密代码扣下来做下处理,把一些用到的参数整理下如下。打上断点分析后,_utils_getuuid这个很长的变量也是加载器的一个函数,我们将这段代码也扣下来,如下。

码王吴彦祖的博客 403

嵌入式开发环境Vscode开发STM32单片机程序

STM32单片机非常强大,大多数教程都是使用 keil 编译器,keil 是收费的而 gcc 是开源免费的。这里介绍一些使用 gcc +开发单片机程序的经验。(这里不解释 gcc 是什么)。

嵌入式技术开发 1844
上一篇: 法线贴图和切线空间
下一篇: 硬链接和软连接
SixDayCoder
博客等级 码龄12年 98粉丝 64原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值