VS2015 OPENGL 环境配置

VS2015 OPENGL 环境配置

1.下载所需的库,一般有glad,glew,glfw,下载编译好binary文件。

(1)glad:https://glad.dav1d.de/,进入后设置如下:

Language:c/c++

gl:version3.3

profile:core

Generate即可下载。

(2)glfw:https://www.glfw.org/download.html

选择32位或这64位的二进制文件,主要看系统,我下载的是64位的,在调试x86(32)程序时也可以用。

(3)glew:http://glew.sourceforge.net/

下载二进制文件。

目前我的配置只用到glad和glfw,对于glew配置应该时相似的。

 2.配置环境

  (1)头文件配置

好多网友说把这些库不要放入VS本身的目录,我为了方便把头文件放到VC/Include目录下,lib文件在VC\lib下,这样做的好处在于,新建项目是不用再包含库目录:

GL目录再glew/Include下,直接粘贴到VC/Include下;

Glad文件夹Include下有两个目录:glad和KHR,分别复制再VC/Include下;

同样地GLFW下也是。

(2)lib文件配置

glew lib Release文件夹下有两个目录:Win32 和 x64

Win32下的lib文件放到VC/lib目录中,x64下的文件放到VC/lib/amd64下。

这里其实告诉了我们glew的编译环境时Release下的,所以以后如果用到这个库,还是以Release调试为好。

另外,glew下还有一个bin文件,对于VC,bin目录也分32位和64位,默认是32位。

将bin下Win32的文件放到VC/bin下,x64 的放到amd64下。

在glfw文件夹下选择对应VS版本的lib文件,我用的是VS2015,对应lib-vc2015。

将glfw3.dll放入VC/bin目录下,(为了保证64位项目能通过调试,是不是也要刚到VC/bin/amd64下呢?),glfw3.lib和glfw3dll.lib分别放到VC/lib文件下和VC/lib/amd下。

   3.调试

新建一个空的项目,根据项目属性(32位/64位),配置lib文件。(glfw3.lib

opengl32.lib)。

将代码生成改为多线程DLL(/MD)。

然后,将glad目录下源文件添加到项目,新建源文件,写入如下代码:

#include <glad/glad.h>

#include <GLFW/glfw3.h>

 

#include <iostream>

 

void framebuffer_size_callback(GLFWwindow* window, int width, int height);

void processInput(GLFWwindow *window);

 

// settings

const unsigned int SCR_WIDTH = 800;

const unsigned int SCR_HEIGHT = 600;

 

int main()

{

    // glfw: initialize and configure

    // ------------------------------

    glfwInit();

    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);

    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);

    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

 

#ifdef __APPLE__

    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // uncomment this statement to fix compilation on OS X

#endif

 

                                                         // glfw window creation

                                                         // --------------------

    GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);

    if (window == NULL)

    {

        std::cout << "Failed to create GLFW window" << std::endl;

        glfwTerminate();

        return -1;

    }

    glfwMakeContextCurrent(window);

    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

 

    // glad: load all OpenGL function pointers

    // ---------------------------------------

    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))

    {

        std::cout << "Failed to initialize GLAD" << std::endl;

        return -1;

    }

 

    // render loop

    // -----------

    while (!glfwWindowShouldClose(window))

    {

        // input

        // -----

        processInput(window);

 

        // render

        // ------

        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);

        glClear(GL_COLOR_BUFFER_BIT);

 

        // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)

        // -------------------------------------------------------------------------------

        glfwSwapBuffers(window);

        glfwPollEvents();

    }

 

    // glfw: terminate, clearing all previously allocated GLFW resources.

    // ------------------------------------------------------------------

    glfwTerminate();

    return 0;

}

 

// process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly

// ---------------------------------------------------------------------------------------------------------

void processInput(GLFWwindow *window)

{

    if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)

        glfwSetWindowShouldClose(window, true);

}

 

// glfw: whenever the window size changed (by OS or user resize) this callback function executes

// ---------------------------------------------------------------------------------------------

void framebuffer_size_callback(GLFWwindow* window, int width, int height)

{

    // make sure the viewport matches the new window dimensions; note that width and

    // height will be significantly larger than specified on retina displays.

    glViewport(0, 0, width, height);

}

4.排坑

如果不管你新建的是x86还是x64项目都要在附加依赖项里加入glfw3.lib和opengl32.lib。

其次,对于x86项目,VC默库认目录是VC/lib,所以要将lib文件放到该目录下。而对于x64程序,VC默认库目录是VC/lib/amd,所以要想在x64下通过调试,还需将lib文件放到该目录下,否则会出现找不到glfw3.lib文件。

特别的,对于x64 DEBUG下调试时,还需将项目属性的代码生成改为多线程DLL(/MD)。

我在配置的过程中,就是遇到好多问题,根据以上操作配置,应该会避免这些吭。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值