刚开始用OpenGL,一开始不太明白配置库的原理,在VS2015下耗费了大量时间。这里将配置过程做个笔记,以供日后查看。配置过程中,需要下载cmake构建工具以及glew和glfw库。

下载地址为:

配置库的基本知识

  在引用外来库时,很少使用源文件(.cpp),大部分库提对类进行声明的头文件和封装了类的链接库(lib静态库或dll动态库)。C++的库会把函数、类的声明放在.h中,实现放在.cpp或.cc中。编译之后,.cpp,.cc,.c会被打包成一个.lib文件,这样可以保护源代码。所以,要使用一个库,除了要include他的头文件以外,还要在链接过程中把lib加进去。

 一般而言,配置过程主要有2中方法:

  • 第一种  可以将我们需要的.lib文件和.h文件拷贝到我们的程序目录下。因为编译时,编译器会在程序所在的文件中逐个寻找。若我们使用的库文件存在动态链接文件时,一般我们把它拷贝到我们程序可执行文件所存在的文件中,这样我们就可以在我们的程序中使用。
  • 第二种  我们可以在我们的程序中加载我们所需要的库文件,从而不需要拷贝到自己程序的目录下。也就是说手动指定当前项目需要搜索库和头文件的位置。具体步骤为:打开一个项目,鼠标点击项目==》属性VC++目录包含目录,在此出添加头文件的路径,可添加多个,中间用分号隔开。然后在包含目录下面的库目录中加.lib文件的路径。这样就可以在项目中引用外来库啦。

在下面配置过程中,我们均采用第二种方案。首先新建一个文件夹OpenGL;在该文件夹下新建include文件夹用来存放头文件,新建libs文件夹来存放库文件。

配置glew

 我们下载的windows版本的glew已经是VS项目(下载的是32位二进制文件),这里不需要cmake来构建。可以直接用VS2015来编译生成需要的库。

  • 找到build文件VC12下面工程文件(glew.sln),用VS2015启动工程文件,然后Ctrl+Shift+B生成解决方案。
  • 接下来将glew文件下的lib\Debug\Win32中的glew32sd.lib拷贝到OpenGL\libs下面。将glew文件夹下的include中的GL文件拷贝到OpenGL\include下。

    到此,glew配置完成,最后面将说明如何在项目中引用。

配置glfw

  glfw不能像glew那样,这里需要先用cmake将项目构建成VS2015下的工程项目,然后再像glew那样去配置。

  • 在glew下面新建文件夹build,用来存放构建的项目。运行cmake的bin目录下的cmake-gui.exe
  • 分别选择source code路径和build后存的位置,点击configure配置为Vs2015,然后Generate。
  • 打开刚才build的项目,接下来和上面glew操作一样。

在项目中使用glew和glfw

 新建一个空白项目,如前面讲到的,在项目属性中找到包含目录库目录,分别加入头文件路径和库路径。



并将下面三个.lib文件加入到连接器,附加依赖项中。

  • opengl.lib
  • glew32sd.lib
  • glfw3.lib

下面来写个代码测试一下

#include <stdio.h>
#include <iostream>
//#include <fstream> //#include <OpenGL/gl.h> #define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h> void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode)
{
std::cout << key << std::endl;
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
glfwSetWindowShouldClose(window, GL_TRUE);
} int main(int argc, const char * argv[])
{ // glfw init
glfwInit();
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
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); // Create window
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); // Set the required callback functions
glfwSetKeyCallback(window, key_callback); // Set this to true so GLEW knows to use a modern approach to retrieving function pointers and extensions
glewExperimental = GL_TRUE;
// Initialize GLEW to setup the OpenGL Function pointers
if (glewInit() != GLEW_OK)
{
std::cout << "Failed to initialize GLEW" << std::endl;
return -1;
} // Define the viewport dimensions
int width, height;
glfwGetFramebufferSize(window, &width, &height);
glViewport(0, 0, width, height); while (!glfwWindowShouldClose(window))
{
// Event
glfwPollEvents(); // Render
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT); // Swap buffer
glfwSwapBuffers(window);
} // Terminate GLFW, clearing any resources allocated by GLFW.
glfwTerminate(); return 0;
}

(一)VS2015下配置OpenGL的更多相关文章

  1. 17 win7 sp1 x64/VS2015下配置creo4.0二次开发环境——调用了众多开源库(ceres-solver,PCL1.8.0,office 2016COM接口,MySql数据库等)

    0 引言 本次开发环境的配置是在综合考虑了开源库的版本.VS版本以及CREO4.0的版本,同时针对甲方需求选择了win7 sp1 x64系统. 配置的过程中遇到了形形色色的问题,但是一一解决了.通过这 ...

  2. 在VS2017下配置OpenGL

    这个方法适合初学者使用,较为简单方便. 第一,你的VS2017一定要安装了C/C++开发组件 可以打开Visual Studio Installer来查看 另外,确定你有安装NuGet包管理器,在单个 ...

  3. FFTW3学习笔记1:VS2015下配置FFTW3(快速傅里叶变换)库

    一.FFTW简介 FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo 和S. ...

  4. Windows Visual Studio 下配置OpenGL

    很多同学不是很清楚OpenGL的配置,一个个帮忙配置也不是办法,干脆就写一篇教程好了. 本人使用的是Visual Studio 2015版本,对于Visual Studio 2012版本的配置会稍有不 ...

  5. Mac Xcode下配置OpenGL

    暂时搁置一下iOS,又要去弄一些杂七杂八的东西了,毕竟是学校的作业,还是要完成的. 作业是让我们用OpenGL做一个茶壶- -.而且要三维立体能旋转的那种. 好吧这些都不是重点,重点是我最终决定在Ma ...

  6. VS2019下配置OpenGL全过程

    一:下载VS2019 官网下载社区版 二:下载GLEW.GLFW 百度网盘地址: 链接:https://pan.baidu.com/s/1Uvz9svdnVRvDXNHjVgApig 提取码:rsgp ...

  7. Windows下配置OpenGL环境

    这里编译工具为VS2012. 首先OpenGL的官网如下链接(英文) http://www.opengl.org http://www.opengl.org/resources/libraries/g ...

  8. win7 64位系统,vs2010下配置OpenGL开发环境

    glut下载地址: http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip 或者:http://user.xmission. ...

  9. 【搞事情】VS2015下的openGL初始化

    环境:glfw+glew+visual studio 2015 原材料下载链接: glfw 下载 glew 下载 glm库 下载 cmake 下载 (我下载的时候有些官网戳不开(大概校园网问题)... ...

随机推荐

  1. AI换脸教程:DeepFaceLab使用教程(2.训练及合成)

    如果前期工作已经准备完毕(DeepFaceLab下载(https://www.deepfacelabs.com/list-5-1.html),然后安装相应的显卡驱动,DeepFaceLab使用教程(1 ...

  2. linux中shell编辑小技巧

    一.循环1到100 ..};do echo $i done 二.获取100以内的随机值 ] 三.截取字符串 demo= :} #截取3位字符echo ${demo:1} #截取1到最后的字符 希望大家 ...

  3. Java并发编程实战 第16章 Java内存模型

    什么是内存模型 JMM(Java内存模型)规定了JVM必须遵循一组最小保证,这组保证规定了对变量的写入操作在何时将对其他线程可见. JMM为程序中所有的操作定义了一个偏序关系,称为Happens-Be ...

  4. Java并发编程实战 第13章 显式锁

    接口Lock的实现类: ReentrantLock, ReentrantReadWriteLock.ReadLock, ReentrantReadWriteLock.WriteLock Reentra ...

  5. RabbitMQ 启用页面管理功能并设置权限

    RabbitMQ 启用页面管理功能并设置权限 RabbitMQ guest administrator  在安装完 rabbitmq 后,默认有一个 guest/guest 账号密码,但是为了安全,此 ...

  6. 鹅厂干货 | 腾讯游戏APP协议迭代的那些事

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~. 作者:罗广镇 | 腾讯移动开发工程师 App与后台通信通常有采用json等文本协议或者采用二进制协议,本文则主要总结了心悦俱乐部App的接 ...

  7. Vue使用 weui picker 弹出框不消失

    前言 最近使用 weui 里面的 datepicker 组件的时候遇到了一个问题: 弹出来 选择年月日的框之后,直接点击导航上的“返回” 按钮,picker 选框不消失,也就是弹出框不消失 weui. ...

  8. springCloud——Dalston.SR5升级到Greenwich.SR2

    老项目: SpringBoot 版本 :1.5.13.RELEASE SpringCloud 版本:Dalston.SR5 项目升级: SpringBoot 版本 :2.1.6.RELEASE Spr ...

  9. 创建ThreadFactory实例的多种方式

    spring的CustomizableThreadFactory guava的MoreExecutors.platformThreadFactory()静态方法 guava的ThreadFactory ...

  10. 常见对象-Object类

    Object类概述 是类层次结构的根类,每个类都直接或者间接继承该类. eg: 1.class Student extends Object{}  //直接继承 2.class Student ext ...