版权声明:本文为博主原创文章,未经博主允许不得转载。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. cocos2d-x中的坑

    1. 设置opacity=0, 子结点不受到影响. FadeOut 也不起作用. 查看代码可以找到一个 cascadeOpacityEnabled 的参数, 默认是关闭的. 打开就可以了. 2. Ta ...

  2. Java线上问题排查思路及Linux常用问题分析命令学习

    前言 之前线上有过一两次OOM的问题,但是每次定位问题都有点手足无措的感觉,刚好利用星期天,以测试环境为模版来学习一下Linux常用的几个排查问题的命令. 也可以帮助自己在以后的工作中快速的排查线上问 ...

  3. win8使用技巧

    windows 8操作系统相信大家已经不再陌生了,虽然正式版本还未发布,但不少朋友已经在使用微软事先推出的windows 消费者预览版,直白的说就是公测版,预览版是免费的,但仅可以使用一年,但其功能与 ...

  4. 9最好的JavaScript压缩工具

    削减是一个从源代码中删除不必要的字符的技术使它看起来简单而整洁.这种技术也被称为代码压缩和最小化.在这里,我们为你收集了10个最好的JavaScript压缩工具将帮助您删除不必要的空格,换行符,评论, ...

  5. 批处理命令学习笔记——Start命令

    Start 命令 启动另一个窗口运行指定的程序或命令,所有的DOS命令和命令行程序都可以由start命令来调用. 语法:START ["title"] [/Dpath] [/I] ...

  6. 使用apktool.jar工具反编译和回编译Android APK 终端命令模式

    1.工具准备 工具可以网上搜索下载新版本,也可以从这里Download:https://github.com/FlymeOS/tools/blob/lollipop-5.1/reverses/apkt ...

  7. ubuntu 原生迅雷

    https://github.com/Xinkai/XwareDesktop/wiki

  8. 树莓派配置tomcat

    先安装配置好apache apt-get install apache2 /etc/init.d/apache2 start (blog passage from http://www.cnblogs ...

  9. 基于Java实现批量下载网络图片

    昨天朋友做项目遇到一个需求,需要把上千个的微博表情图片下载到本地磁盘,并做好规范命名,塞给我一堆Json数据,让我帮忙处理下,反正闲着也没事干,就帮忙写了.(很简单的一个功能,随手记录下,刚好填补下最 ...

  10. 10享元模式Flyweight

    一.什么是享元模式 Flyweight模式也叫享元模式,是构造型模式之 一,它通过与其他类似对象共享数据来减小内存 占用. 二.享元模式的结构 三.享元模式的角色和职责 抽象享元角色: 所有具体享元类 ...