版权声明:本文为博主原创文章,未经博主允许不得转载。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. springboot 项目中获取默认注入的序列化对象 ObjectMapper

    在 springboot 项目中使用 @SpringBootApplication 会自动标记 @EnableAutoConfiguration 在接口中经常需要使用时间类型,Date ,如果想要格式 ...

  2. App界面设计规范-字体规范

    通过对不同类型的app进行总结,总结出app的字体规范. 一.字体选择 1.IOS:苹果ios 9系统开始,系统最新的默认中文字体是:苹方.英文字体是: San Francisco 2.Android ...

  3. pandas DataFrame(3)-轴

    和numpy数组(5)-二维数组的轴一样,pandas DataFrame也有轴的概念,决定了方法是对行应用还是对列应用: 以下面这个数据为例说明: 这个数据是5个车站10天内的客流数据: rider ...

  4. python(60):configparser 函数,配置文件

    ConfigParser模块学习 介绍 ConfigParser模块在python中是用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section),每 ...

  5. 如何快速学习Scala

    大数据学习过程中,会学习非常多的技术,但SCALA无疑是必不可少,那我们在大数据技术的学习过程中,如何快速的认识scala,并且学习它,感谢科多大数据公司的余老师提供的详细素材,本人整理成章,希望对你 ...

  6. java中的数据加密2 对称加密

    对称加密 也叫私钥加密.   采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密. 需要对加密和解密使用相同密钥的加密算法.由于其速度快,对 ...

  7. Eclipse+Maven创建webapp项目<二>

    Eclipse+Maven创建webapp项目<二> 1.开启eclipse,右键new——>other,如下图找到maven project 2.选择maven project,显 ...

  8. java.sql.SQLException: ORA-01578: ORACLE 数据块损坏问题解决办法

    错误信息: java.sql.SQLException: ORA-01578: ORACLE 数据块损坏 (文件号 17, 块号 315703) ORA-01110: 数据文件 17: 'D:\ORA ...

  9. java-信息安全(十二)-数字签名【Java证书体系实现】

    概述 信息安全基本概念 数字证书 数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上 ...

  10. [PHP] 09 - PHP 7 & Tricky

    新特征列表: 序号 内容 1 PHP 标量类型与返回值类型声明 2 PHP NULL 合并运算符 3 PHP 太空船运算符(组合比较符) 4 PHP 常量数组 5 PHP 匿名类 6 PHP Clos ...