OpenGL学习记录(003)-Qt5.14.2配置GLEW开发环境

GLEW库介绍

由于OpenGL本身只是一个标准图形API的接口规范,本身不包含对API的接口实现,实际的实现过程都是由各个显卡厂家实现的。不同的显卡公司,也会发布一些只有自家显卡才支持的扩展函数,如果想用这些函数,就必须去寻找最新的glext.h文件。因此即便是通过OpenGL编写的图形程序,在安装不同显卡的主机上也不一定能够正常运行。而GLEW库的出现就是为了解决这个问题,GLEW是一个跨平台的C++扩展库,基于OpenGL图形接口。GLEW能自动识别当前平台所支持的全部OpenGL高级扩展涵数。也就是说,只要包含一个glew.h头文件,就能使用gl,glu,glext,wgl,glx的全 部函数。GLEW支持目前流行的各种操作系统(including Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris)。


获取GLEW库

在GLEW的官方页面http://glew.sourceforge.net/可以看到已经编译好的二进制包下载链接,如果动手能力强的话也可以下载源码自己移植编译。我这边是win10的环境,所以就直接下载二进制包了。

添加GLEW库

和添加GLFW库一样在工程的根目录添加一个GLEW文件夹,把下载的GLEW库文件复制进去。

跟之前添加GLFW库一样,选择添加外部库,但是这次要选择静态库的方式。然后点击下一步就好了。

库添加完成后,修改下main.cpp中的代码,测试下GLEW库能否正常运行。这里要注意包含glew.h文件的位置,一定要在最开始。然后就是编译执行。

#include <iostream>

#include <GL/glew.h> //这个头文件一定要在最前面包含
#include <GLFW/glfw3.h>

using namespace std;

int main(void)
{
    GLFWwindow* window;

    /* Initialize the library */
    if (!glfwInit())
        return -1;

    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "出来吧,三角形", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(window);

    if(glewInit()!=GLEW_OK)
    {
        printf("GLEW Init Failed \n");
        return  0;
    }

    printf("%s\n",glGetString(GL_VERSION));//打印当前的OpenGL版本号

    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */
        glClear(GL_COLOR_BUFFER_BIT);

        glBegin(GL_TRIANGLES);//开始绘制三角形
#if 0
        glVertex2f(-0.5f,-0.5f);//顶点坐标 ,这里一定要填三个坐标,否则绘制不出来三角形
        glVertex2f(0.0f,0.5f);//顶点坐标
        glVertex2f(0.5f,-0.5f);//顶点坐标
#else
        GLfloat points[]={-0.5f,-0.5f,0.0f,0.5f,0.5f,-0.5f};
        glVertex2fv(&points[0]);
        glVertex2fv(&points[2]);
        glVertex2fv(&points[4]);
#endif
        glEnd();//绘制结束

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

添加预编译宏

和添加GLFW库一样,不出意外的话,会看到下面的错误提示,libglew32s.a库没有找到。

为了解决上面的这个错误,需要对工程的.pro文件做些修改,首先是删除下面两行内容

win32:!win32-g++: PRE_TARGETDEPS += $$PWD/../glew/lib/Release/x64/glew32s.lib
else:win32-g++: PRE_TARGETDEPS += $$PWD/../glew/lib/Release/x64/libglew32s.a

然后是添加一个预编译的宏定义,代码如下

DEFINES += GLEW_STATIC

修改后的完整.pro文件如下:

TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += \
        main.cpp

#添加GLFW库支持
win32: LIBS += -L$$PWD/../glfw/lib-mingw-w64/ -lglfw3dll
INCLUDEPATH += $$PWD/../glfw/include
DEPENDPATH += $$PWD/../glfw/include

#添加GLEW库支持
DEFINES += GLEW_STATIC
win32: LIBS += -L$$PWD/../glew/lib/Release/x64/ -lglew32s
INCLUDEPATH += $$PWD/../glew/include
DEPENDPATH += $$PWD/../glew/include

#opengl支持库、Windows支持库
LIBS += -lopengl32 -luser32

保存.pro文件后,就能再次编译执行程序了,这次就能看到窗口里面的白色三角形了。同时也能看到当前使用的OpenGL库版本了。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值