【OpenGL】GLFW配置
2016-07-04 11:14
274 查看
说在前面
能通过OpenGL搜过来的大多不是作业要求就是对图形学感兴趣的。OpenGL大家都有所了解,一般认为是一个通用的图形图像API。而实际上其是一个规范,严格规定函数的执行,其中的实现则是OpenGL自己定义的。本人大学本科专业课上教授的计算机图形学课程。但是其实验指导中使用的是glut库,让我们来看看官网是怎么说的:
……好吧┑( ̄Д  ̄)┍
然后后来上了一门游戏课之后,老师给我们推荐了GLFW库。网上大多数的环境配置还是glut库,所以这里稍微写一下这两天配环境的过程。
参考教程:http://learnopengl-cn.readthedocs.io/zh/latest/ 当中的
创建窗口教程
非常好的一个网站,之前好几个关键技术点都是在这里获取,真的非常感谢他们!我这里的博客也只是在学习中自己的一些备忘而已。配环境的话大家参考这个教程即可,如果遇到一些奇怪的坑就可以回头再来看看我写的备忘……主要就是在这个基础上说点自己的心得。
配置说明&补充
1. 编译源代码
这里原教程写的很清楚,从官网上可以下载:http://www.glfw.org/p.s. 官网上提供了给windows用户编译好的lib下载的链接,然而之前尝试了很多次都失败了。建议大家还是下载源代码来进行编译,也就是官网进去的第一个下载链接。
我这里下载的是GLFW 3.2。然后使用CMAKE进行生成visual studio的工程即可,我这里使用的是
Visual Studio 2013,其在CMAKE会有一个内部版本号14,不用虚,看到2013即可。其他步骤按教程来。
用vs打开编译之后,生成的大概只有个lib文件吧……它会出现在
src/debug中(在教程里也说到,但是很多粗心的同学说不定和我一样)。
2. 使用GLFW库
还是针对vs用户,关于头文件引用,教程中给出的是在工程中配置VC++ Directories,我以前则是直接把它和lib都扔到vs的安装目录里面去。看了教程觉得单独出来很重要,否则放到别人电脑上就没法跑真的好尴尬。的确这样子能够很好地管理自己的代码,还可以做一下全平台的不同库的链接……(想多了)不过在链接lib库的时候我是使用了下面的代码直接来引入的:
#pragma comment (lib, "libs/glfw3.lib")
这样子可以把根目录下
libs目录下的库文件直接引进来,不需要在工程属性中进行配置。
3. 看看能不能跑
拼凑了一下教程的代码,如下若是能跑出一个不是黑色的窗口就已经是配好了。#include "GL/glew.h" #include "GLFW/glfw3.h" #include "glm/glm.hpp" #include <iostream> #pragma comment (lib, "opengl32.lib") #pragma comment (lib, "libs/glfw3.lib") #pragma comment (lib, "libs/glew32d.lib") int main(){ glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_RESIZABLE, GL_FALSE); GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", nullptr, nullptr); if (window == nullptr) { std::cout << "Failed to create GLFW window" << std::endl; glfwTerminate(); return -1; } glfwMakeContextCurrent(window); while (!glfwWindowShouldClose(window)) { // 检查事件 glfwPollEvents(); // 在这里执行各种渲染操作 glClearColor(0.2f, 0.3f, 0.3f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); //交换缓冲区 glfwSwapBuffers(window); } glfwTerminate(); return 0; }
可以看到GLFW的代码结构和glut真的是差的十万八千里(大概gl库部分还是一样的吧)。
我这里还配了
glew库(用于shader等功能)和
glm库(用于数学运算)。后面用到的时候会再提。
相关文章推荐
- 解决Vista系统OpenGL驱动问题的方法整理
- Delphi下OpenGL2d绘图之画四边形的方法
- Delphi下OpenGL2d绘图之画点的方法
- Delphi下OpenGL2d绘图之初始化流程详解
- Delphi使用OpenGL2d绘图之画图片Bmp的方法
- 通过OpenGL ES混合模式缩放视频缓冲区来适应显示尺寸
- VC运用OPENGL加载BMP纹理图的实现方法汇总
- java实现OpenGL ES纹理映射的方法
- java基于OpenGL ES实现渲染实例
- android调用GLES20.glGenerateMipmap报错glError 1280
- OpenGL坐标系介绍
- 【翻译】安卓opengl ES教程之四——添加颜色
- linux下opengl的安装(with qt)
- OpenGL超级宝典笔记——显示列表
- OpenGL超级宝典笔记——顶点数组
- OpenGL生成轮廓
- OpenGL超级宝典笔记——性能比较
- OpenGL超级宝典笔记——顶点缓冲区对象
- OpenGL超级宝典笔记——选择
- OpenGL超级宝典笔记——反馈