OpenGL开发学习指南二(glfw+glad)
版权声明:本文为博主原创文章,未经博主允许不得转载。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文件,将如下代码拷贝进去(暂时无需理会代码含义)
- #include <glad/glad.h>
- #include <GLFW/glfw3.h>
- #include <stdio.h>
- // settings
- const unsigned int SCR_WIDTH = 800;
- const unsigned int SCR_HEIGHT = 600;
- void processInput(GLFWwindow *window)
- {
- if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
- {
- //将窗口设置为关闭,跳出循环
- glfwSetWindowShouldClose(window, true);
- }
- }
- void framebuffer_size_callback(GLFWwindow* window, int width, int height)
- {
- glViewport(0, 0, width, height);
- }
- int main()
- {
- //glfw初始化
- glfwInit();
- glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
- glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
- glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
- //glfw创建窗口
- GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
- if (window == NULL)
- {
- printf("创建窗口失败");
- //终止
- glfwTerminate();
- return -1;
- }
- //显示窗口
- glfwMakeContextCurrent(window);
- //设置回调,当窗口大小调整后将调用该回调函数
- glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
- // glad初始化
- if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
- {
- printf("加载失败");
- return -1;
- }
- // 使用循环达到循环渲染效果
- while (!glfwWindowShouldClose(window))
- {
- //自定义输入事件
- processInput(window);
- //交互缓冲区,否则显示空白
- glfwSwapBuffers(window);
- //输入输出事件,否则无法对窗口进行交互
- glfwPollEvents();
- }
- //终止渲染 关闭并清理glfw本地资源
- glfwTerminate();
- return 0;
- }
运行程序,运行后创建一个窗口表明环境配置成功!!!
OpenGL开发学习指南二(glfw+glad)的更多相关文章
- Civil 3D API二次开发学习指南
Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...
- Android Wear(手表)开发 - 学习指南
版权声明:欢迎自由转载-非商用-非衍生-保持署名.作者:Benhero,博客地址:http://www.cnblogs.com/benhero/ Android Wear开发 - 学习指南 http: ...
- opengl基础学习专题 (二) 点直线和多边形
题外话 随着学习的增长,越来越觉得自己很水.关于上一篇博文中推荐用一个 学习opengl的 基于VS2015的 simplec框架.存在 一些问题. 1.这个框架基于VS 的Debug 模式下,没有考 ...
- OpenGL 开始学习指南
近期需要做一个涌潮的预报与仿真模拟,为了使模型更具有真实感,且逼真,使用起来更灵活.感觉还是得从基础的OpenGL学习.鉴于Direct3D技术存在的众多不确定性,且评论不太好的原因,决定用OpenG ...
- Autodesk View and Data API二次开发学习指南
什么是View and Data API? 使用View and Data API,你可以轻松的在网页上显示大型三维模型或者二维图纸而不需要安装任何插件.通过View and Data API,你可以 ...
- OpenGL入门学习(二)
http://developer.178.com/201103/94954661733.html 一.点.直线和多边形我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念在计算机中 ...
- 软件开发学习笔记 <二>软件开发模型、Up、Rup、敏捷Up
软件开发过程(process) 是一个将用户需求转化为软件系统所需要的活动的集合. 软件生命周期(SDLC,Software Devlopment Life Cycle) 软件从孕育.诞生.成长.成熟 ...
- Android开发学习总结(二)——使用Android Studio搭建Android集成开发环境
有很长一段时间没有更新博客了,最近实在是太忙了,没有时间去总结,现在终于可以有时间去总结一些Android上面的东西了,很久以前写过这篇关于使用Android Studio搭建Android集成开发环 ...
- vue移动音乐app开发学习(二):页面骨架的开发
本系列文章是为了记录学习中的知识点,便于后期自己观看.如果有需要的同学请登录慕课网,找到Vue 2.0 高级实战-开发移动端音乐WebApp进行观看,传送门. 完成后的页面状态以及项目结构如下: 一: ...
随机推荐
- 【Linux高级驱动】触摸屏工作原理与工作流程
触摸屏工作原理 触摸屏工作流程 @成鹏致远 (blogs:http://lcw.cnblogs.com) (email:wwwlllll@126.com) ) From WizNote
- 测试覆盖率工具:EclEmma
测试覆盖率工具:EclEmma 2016-08-26 目录 1 测试覆盖率实现技术2 EclEmma介绍3 EclEmma测试覆盖率指标4 EclEmma安装5 示例项目介绍 5.1 创建项目 5 ...
- 你知道element中el-table的列名中不能含有" . "吗?
[本文出自天外归云的博客园] Vue+element比较流行,但是element有个坑,就是element的表格列名中不能含有点儿" . ",否则数据都显示不出来. 在elemen ...
- 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-10底层驱动之I2C
视频简介:该视频介绍iCore3应用开发平台中I2C通信的实现方法. 源视频包下载地址:链接:http://pan.baidu.com/s/1dF5Ssbn 密码:czw8 银杏科技优酷视频发布区:h ...
- 【原】使用Json作为Python和C#混合编程时对象转换的中间文件
一.Python中自定义类对象json字符串化的步骤[1] 1. 用 json 或者simplejson 就可以: 2.定义转换函数: 3. 定义类 4. 生成对象 5.dumps执行,引入转换函 ...
- Netbeans rcp中获得本地文件系统路径
通过file协议 —————————————————————————————————————————————————————— URL url = new URL("file:///E:/A ...
- Qt库版查询
1 背景 在为嵌入式产品开发Qt应用时,开发所使用的Qt库要和嵌入式系统所支持的Qt库版本一致,否则开发的App无法正确运行.那么,如何查询一个嵌入式系统中所安装Qt库的版本呢?下面将进行一些总结. ...
- 爱快路由计费系统easyradius隆重发布,支持V2版本,欢迎大家测试使用
随着PA.BV接口的发布的临近,我们已经对ROS及爱快V2接口进行大量的升级工作 经用户测试,各方便已满足用户需求. 其实很早以前我们就有支持爱快路由的打算,但是由于各方便原因,通讯接口做好了,但是并 ...
- DLL断点调试
一般来说调试DLL是把DLL工程和exe工程放到一个解决方案里.如果不放到一个解决方案里,那两者的输出目录要一致,属性-连接器-常规-输出目录.保证dll,dll的pdb,exe,exe的pdb在一个 ...
- No suitable servers found (`serverselectiontryonce` set): [Failed connecting to '115.28.161.44:27017': Connection timed out] php mongodb 异常
我 php mongodb 拓展使用的是 MongoDB driver 今天查询数据的时候 偶尔会提示, No suitable servers found (`serverselectiontry ...