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进行观看,传送门. 完成后的页面状态以及项目结构如下: 一: ...
随机推荐
- stale element reference: element is not attached to the page document 异常
在执行脚本时,有时候引用一些元素对象会抛出如下异常 org.openqa.selenium.StaleElementReferenceException: stale element referenc ...
- [k8s]kube-dns/dashboard排错历险记(含sa加载用法/集群搭建)
kube-dns原理 参考: 组件架构看这个就够了 http://cizixs.com/2017/04/11/kubernetes-intro-kube-dns 设置细节看这个就够了 http://b ...
- Multiplication of numbers
Questin: There is an array A[N] of N numbers. You have to compose an array Output[N] such that Outpu ...
- RelativeLayout 布局参数
今天调布局的时候 想把界面做成横屏竖屏都可以的 突然发现之前理解的android:布局参数都是有问题的 今天贴出来 下次自己也记得 以下大部为用在RelativeLayout中的一些参数: andro ...
- ASP.NET Core Razor Pages
Razor 页面是Asp.Net Core2.0新增的一个功能.Razor 页面是 ASP.NET Core MVC 的一个新特性,它可以使基于页面的编码方式更简单高效. 环境:vs2017 .net ...
- 关于Python打包运行的一些思路
需求 本地开发python django应用程序,然后放到生产环境运行.使用了tensorflow,手动安装包很麻烦.生产环境不能联网,不能使用 pip freeze. 思路: 使用docker,直接 ...
- SaaS产品成功学
『精益』和『敏捷』之类的方法论在产品实现方面消除了不少浪费,但面对SaaS产品,这些却并没有像银弹般有效. 国外的『Ramen』团队模仿Maslow的需求层次理论提出了SaaS产品的需求层次理论,可以 ...
- Android——RecycleView
RecycleView设置点击事件 http://blog.csdn.net/guxiao1201/article/details/40423361
- mac通过路径找到对应的文件夹
在finder中 command + shift + G 跳出窗口中输入指定的路径,即可到达.
- Halcon算子学习
* dev前缀的算子表示开发编译器相关的函数 dev_update_window ('off')//halcon编辑器图形输出界面参数是否都更新,off表示手动,on表示全部更新 dev_close_ ...