版权声明:本文为博主原创文章,未经博主允许不得转载。blog.liujunliang.com.cn https://blog.csdn.net/qq_33747722/article/details/77200257

在上一篇文章中博主介绍了freeglut+glew的环境配置,本文介绍glfw+glad的环境配置

本系列教程将使用本文的opengl开发库

开发工具

VS2015

glfw源码:源码地址

CMake(将源码生成自己想要的IDE工程):下载地址

glad:点击打开链接

当然了,这些源码文件包括本文的工程代码我都将上次,方便大家学习

glfw环境配置

首先需要生成glfw 库文件

打开CMake

按如下图生成目标工程,我这里选择的是VS 21017

生成在build目标目录下找到.sln文件,用vs2017打开

点击生成解决方案,之后咋、src/Debug目录下就能找到我们需要的glfw.lib的库文件了

创建一个文件夹用于保存include和libs文件,将(\glfw-3.2.1\include)下的文件拷贝到include文件夹下;将glfw3.lib拷贝到libs文件下

接下来回到VS,右键点击选择属性

按如下图选择包含目录和库目录

打开链接器->输入,按如下图填入opengl32.lib、glfw3.lib两个库名称

glad环境配置

打开glad在线服务,将模式Profile选择为Core,点击生成 Generate

下载.zip文件后解压缩,文件目录如下

将include包含到项目内

将src文件添加到你的工程中

这样环境配置好了

代码测试

新建一个CPP文件,将如下代码拷贝进去(暂时无需理会代码含义)


  1. #include <glad/glad.h>
  2. #include <GLFW/glfw3.h>
  3. #include <stdio.h>
  4. // settings
  5. const unsigned int SCR_WIDTH = 800;
  6. const unsigned int SCR_HEIGHT = 600;
  7. void processInput(GLFWwindow *window)
  8. {
  9. if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
  10. {
  11. //将窗口设置为关闭,跳出循环
  12. glfwSetWindowShouldClose(window, true);
  13. }
  14. }
  15. void framebuffer_size_callback(GLFWwindow* window, int width, int height)
  16. {
  17. glViewport(0, 0, width, height);
  18. }
  19. int main()
  20. {
  21. //glfw初始化
  22. glfwInit();
  23. glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
  24. glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
  25. glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
  26. //glfw创建窗口
  27. GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
  28. if (window == NULL)
  29. {
  30. printf("创建窗口失败");
  31. //终止
  32. glfwTerminate();
  33. return -1;
  34. }
  35. //显示窗口
  36. glfwMakeContextCurrent(window);
  37. //设置回调,当窗口大小调整后将调用该回调函数
  38. glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
  39. // glad初始化
  40. if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
  41. {
  42. printf("加载失败");
  43. return -1;
  44. }
  45. // 使用循环达到循环渲染效果
  46. while (!glfwWindowShouldClose(window))
  47. {
  48. //自定义输入事件
  49. processInput(window);
  50. //交互缓冲区,否则显示空白
  51. glfwSwapBuffers(window);
  52. //输入输出事件,否则无法对窗口进行交互
  53. glfwPollEvents();
  54. }
  55. //终止渲染 关闭并清理glfw本地资源
  56. glfwTerminate();
  57. return 0;
  58. }

运行程序,运行后创建一个窗口表明环境配置成功!!!

OpenGL开发学习指南二(glfw+glad)的更多相关文章

  1. Civil 3D API二次开发学习指南

    Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...

  2. Android Wear(手表)开发 - 学习指南

    版权声明:欢迎自由转载-非商用-非衍生-保持署名.作者:Benhero,博客地址:http://www.cnblogs.com/benhero/ Android Wear开发 - 学习指南 http: ...

  3. opengl基础学习专题 (二) 点直线和多边形

    题外话 随着学习的增长,越来越觉得自己很水.关于上一篇博文中推荐用一个 学习opengl的 基于VS2015的 simplec框架.存在 一些问题. 1.这个框架基于VS 的Debug 模式下,没有考 ...

  4. OpenGL 开始学习指南

    近期需要做一个涌潮的预报与仿真模拟,为了使模型更具有真实感,且逼真,使用起来更灵活.感觉还是得从基础的OpenGL学习.鉴于Direct3D技术存在的众多不确定性,且评论不太好的原因,决定用OpenG ...

  5. Autodesk View and Data API二次开发学习指南

    什么是View and Data API? 使用View and Data API,你可以轻松的在网页上显示大型三维模型或者二维图纸而不需要安装任何插件.通过View and Data API,你可以 ...

  6. OpenGL入门学习(二)

    http://developer.178.com/201103/94954661733.html 一.点.直线和多边形我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念在计算机中 ...

  7. 软件开发学习笔记 <二>软件开发模型、Up、Rup、敏捷Up

    软件开发过程(process) 是一个将用户需求转化为软件系统所需要的活动的集合. 软件生命周期(SDLC,Software Devlopment Life Cycle) 软件从孕育.诞生.成长.成熟 ...

  8. Android开发学习总结(二)——使用Android Studio搭建Android集成开发环境

    有很长一段时间没有更新博客了,最近实在是太忙了,没有时间去总结,现在终于可以有时间去总结一些Android上面的东西了,很久以前写过这篇关于使用Android Studio搭建Android集成开发环 ...

  9. vue移动音乐app开发学习(二):页面骨架的开发

    本系列文章是为了记录学习中的知识点,便于后期自己观看.如果有需要的同学请登录慕课网,找到Vue 2.0 高级实战-开发移动端音乐WebApp进行观看,传送门. 完成后的页面状态以及项目结构如下: 一: ...

随机推荐

  1. R8500 MPv2 版本 刷 Kong编译的 ddwrt 后,使用Entware-ng 安装opkg安装第三方软件

    先说R8500吧. 由于Netgear网件的问题导致R8500在去年双11前夕出现了全球范围的Boot Loop的问题,现象为新设备开机一段时间后,路由器进入不停重启的状态,电源灯桔黄色.在和网件工程 ...

  2. IIS7 配置 PHP5.6

    环境: 操作系统:Win7 & 10 (x64) 中文专业版 PHP       :V5.6 首先添加IIS. 控制面板-〉程序-〉打开或关闭Windows功能 1. 勾选"Inte ...

  3. rand()产生随机数 及其和clock()的不同

    rand()使用 首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数. 定义函数 : int rand(void) 函数说明 :因为rand的内部实现 ...

  4. 使用python抓取58手机维修信息

    之前在ququ的博客上看到说 python 中的BeautifulSoup 挺好玩的,今天下午果断下载下来,看了下api,挺好用的,完了2把,不错. 晚上写了一个使用python抓取58手机维修信息的 ...

  5. Sphinx 2.2.11-release reference manual

    1. Introduction 1.1. About 1.2. Sphinx features 1.3. Where to get Sphinx 1.4. License 1.5. Credits 1 ...

  6. ESN 与 MEID

    ESN (Electronic Serial Numbers):电子序列号.在CDMA 系统中,是鉴别一个物理硬件设备唯一的标识.也就是说每个手机都用这个唯一的ID来鉴别自己, 就跟人的身份证一样.一 ...

  7. 详解Linux安装GCC

    为你详解Linux安装GCC方法 2009-12-11 14:05 佚名 博客园 字号:T | T 现在很多程序员都应用GCC,怎样才能更好的应用GCC.本文以在Redhat Linux安装GCC4. ...

  8. mysql之我们终将踩过的坑(优化)

    一.EXPLAIN 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划. 下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据 type列,连接类型.一个好的sql语句至少 ...

  9. Angular4学习笔记(五)- 数据绑定、响应式编程和管道

    概念 Angular中的数据绑定指的是同一组件中控制器文件(.ts)与视图文件(.html)之间的数据传递. 分类 流向 单向绑定 它的意思是要么是ts文件为html文件赋值,要么相反. ts-> ...

  10. 总结一下搭建简单Web服务器的一些方法

    使用nodejs+anywhere模块搭建静态文件服务器 anywhere随时随地将你的当前目录变成一个静态文件服务器的根目录. 安装npm install anywhere -g,然后进入任意目录在 ...