欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vs2017+OpenGL配置(glfw+glew、glfw+glad、glut三种环境)

程序员文章站 2022-07-14 08:05:12
...

准备工作

首先安装vs2017,安装的时候选择的是C++那个包(第一行右边那个,忘截图了。。。)

然后下载glfw和glad(可以用glfw+glew,glad比glew新且有前景),最老的是glut,比较轻量,但不适合大型工程,一般会被glfw所替代。

下载注意位数,此次用的都是32位的,vs2017属性设置的时候也要注意32位,调试的时候注意x86

一些体会:也在网上看了许多人的博客,写的很好,但综合之后发现自己缺少思考,应该从程序的运行模式来思考,从VS的工作模式上理解环境配置的话应该是有两种方法的(其他版本VS的文件引入模式应该也是这样):

  1. 从项目属性引入需要的文件
  2. 在VS文件夹中添加需要的文件

(有的人在VS中添加完文件之后,又再次从属性中进行了引入,其实是重复操作)
下面有这三种环境配置

  1. glfw+glew
  2. glfw+glad
  3. glut

前两种是从项目属性引入库和头文件,glut是直接添加文件,因为glfw的文件比较多,一时间可能会弄混,当然前两个环境也可以去添加文件,glut也可以从项目属性引入,都是可行的办法,但自己去尝试可能会出现的问题就要去自己解决了。

先说glfw+glew的配置:

1)创建一个空项目
2)修改项目属性
VC++中的包含目录修改:(把include文件夹加入)
vs2017+OpenGL配置(glfw+glew、glfw+glad、glut三种环境)
VC++中的库目录修改:
vs2017+OpenGL配置(glfw+glew、glfw+glad、glut三种环境)
链接器–>输入–>` 附加依赖项:添加

opengl32.lib
glfw3.lib
glew32s.lib

3)调试成功,但有警告:
“警告 LNK4098 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library BuildEnv F:\xxxx”

链接器–>忽略特定默认库:添加MSVCRT.lib
忽略掉这个库就不会有警告了

示例程序:

#include<iostream>
#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW\glfw3.h>

using namespace std;

int main(int argc, char** argv[])
{
    /*glewExperimental = GL_TRUE;
    if (glewInit()!=GLEW_OK)
    {
    cout << "failed to initalize GLEW" << endl;
    return -1;
    }*/

    glfwInit();//初始化
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//配置GLFW
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//配置GLFW
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//
    glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);

    GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", nullptr, nullptr);
    if (window == nullptr)
    {
        cout << "Failed to create GLFW window" << endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);
    while (!glfwWindowShouldClose(window))
    {
        glfwPollEvents();
        glfwSwapBuffers(window);
    }
    glfwTerminate();
    return 0;
}

glfw+glad配置

http://glad.dav1d.de/
在线服务网站,gl选择3.3以上版本(3.3是可编程管线版本,更新的版本也能正常工作),语言为c/c++,Profile设置为core,插件不管就行,最后Generate并下载zip文件

解压glad的压缩包
glfw的配置和上面一样,需要把glad的include配到包含目录里,然后把glad目录中的src目录下的glad.c复制到项目的源文件夹下即可

示例程序:

#include <glad/glad.h>
#include <GLFW/glfw3.h>
 
#include <iostream>
 
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;
 
int main()
{
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
 
    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);
 
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
    {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }    
 
    while (!glfwWindowShouldClose(window))
    {
 
        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);
 
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
 
    glfwTerminate();
    return 0;
}

glut配置

无奈教材书上用的是glut,为了实验部分,不得不配。

先下载glut,包含以下几个文件:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yDn4NTyV-1570705098762)(en-resource://database/4156:1)]

使用的时候要引入glut.h,函数也要用lib中的函数,系统也要用glut的dll配置文件。
先说一个和上面两个不一样的配置方法:

glut.h放在D:\Microsoft\VisualStudio\VC\Tools\MSVC\14.16.27023\include文件夹中,在程序中include的时候可以直接#include<glut.h>,也有人会在include文件夹中创建一个gl文件夹来放置glut.h,这样的话程序要写成#include<gl/glut.h>,这个根据个人习惯了,我直接放在了include中。

glut32.lib放在D:\Microsoft\VisualStudio\VC\Tools\MSVC\14.16.27023\lib\x86文件夹中,因为x86架构是32位的,我编程调试的时候用的也是x86,所以一般都用glut32.lib。
glut.lib应该是用于64位程序或系统,使用的话放在D:\Microsoft\VisualStudio\VC\Tools\MSVC\14.16.27023\lib\x64文件夹中.

dll文件的话可能会有点小问题,一般来说glut32.dll放在C:\Windows\System32中,glut.dll是放在C:\Windows\SysWOW64中,用的程序用的是x86进行的调试,然后就报错失败了,在尝试把glut32.dll放入C:\Windows\SysWOW64中之后调试成功了,可能是系统对配置文件的调用问题,这里出现问题的话可以尝试更改dll文件的放置位置

以上是glut的x86调试,对于x64的调试又会出现新的问题,试了一下x64调试,系统在x64模式下也寻找glut32.lib来运行程序,而且不管用哪一个lib文件都会这样的报错:

LNK4272 库计算机类型“x86”与目标计算机类型“x64”冲突
Project2
D:\Microsoft\VisualStudio\VC\Tools\MSVC\14.16.27023\lib\x64\glut32.lib

目前只用了x86调试程序,就先解决这些问题吧

如开头所述,glut配置也可以从项目属性去添加文件,可以尝试一下,不过出了问题就又要麻烦了。。。

相关标签: OpenGL环境配置