《QT的Opengl开发(c++) 二》设置opengl配置并创建第一个Opengl三角形程序

本文是QT OpenGL开发的第二篇,详细介绍了如何在C++环境下,结合QT创建一个工程,并利用glfw3在Windows系统上配置OpenGL,最终实现输出第一个OpenGL三角形程序。

QT的Opengl开发(c++) 系列文章目录

开发系统:WINDOWS+LINUX

IDE:VS2017/QTCreator

语言:C++


前言

随着人工智能的不断发展,人们在游戏开发、图形开发、工程实施3D绘图等等都大量依赖显卡绘图,本系列是基于跨平台开发的一套可以移植到windows、linux上的系统引擎。你的鼓励是我不懈的动力。Let‘s Go!


一、创建一个QT工程

创建QT工程,为了好讲解,我们直接编写一个pro文件

cse.pro:

TEMPLATE = subdirs

SUBDIRS = OGLWindow 

OGLWindow.pro:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11  \


DESTDIR = $$PWD/../bin

TARGET  = $$qtLibraryTarget(MainWindow)


#手动指定文件名称,debug版本自动在后面加上字母d
win32:CONFIG(debug, debug|release):{
        LIBS += -lDbgHelp
        #glfw3在windows平台所必须的3个文件
        LIBS += -lUser32 -lgdi32 -lOpengl32
        LIBS += -L"$$PWD/../3rdParty/GLFW/lib/msvc2017_64" -lglfw3d

        INCLUDEPATH += \
        INCLUDEPATH += $$PWD/../include
        INCLUDEPATH += $$PWD/../3rdParty/GLFW/include
}

win32:CONFIG(release, debug|release):{
        LIBS += -lDbgHelp
        #glfw3在windows平台所必须的3个文件
        LIBS += -lUser32 -lgdi32 -lOpengl32
        LIBS += -L"$$PWD/../3rdParty/GLFW/lib/msvc2017_64" -lglfw3

        INCLUDEPATH += \
        INCLUDEPATH += $$PWD/../include
        INCLUDEPATH += $$PWD/../3rdParty/GLFW/include
}

unix:!macx:CONFIG(debug, debug|release) {
     
}
unix:!macx:CONFIG(release, debug|release) {
}

SOURCES += \
    main.cpp

HEADERS +=

FORMS +=

TRANSLATIONS += \
    MainWindow_zh_CN.ts

这里由于是跨平台,所以我们用win32和unix分开配置,在windows上使用glfw3时,我们还需要设置windows库,User32.dll gdi32.dll Opengl32.dll,如果你设置了console控制台程序,还需要添加Shell32.dll

二、main.c主程序编写

main.c:

#include <iostream>
#include <QApplication>

#include <GLFW/glfw3.h>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    GLFWwindow * w;

    /* Init */
    if(!glfwInit())
    {
        return -1;
    }

    /*Create Window*/
    w = glfwCreateWindow(640,480,"Hello world",NULL,NULL);
    if(!w)
    {
        glfwTerminate();
        return -1;
    }

    /* 上下文 */
    glfwMakeContextCurrent(w);
    qDebug("OpenGL Info");
    qDebug("OpenGL Vendor: %s",glGetString(GL_VENDOR));
    qDebug("OpenGL Renderer: %s",glGetString(GL_RENDERER));
    qDebug("OpenGL Version: %s",glGetString(GL_VERSION));
    /*Loop*/
    while(!glfwWindowShouldClose(w))
    {
        /* Render here */
        glClear(GL_COLOR_BUFFER_BIT);

        /* Render the first triangle */
        glBegin(GL_TRIANGLES);
        glVertex2f(-0.5f,-0.5f);
        glVertex2f(0.0f,0.5f);
        glVertex2f(0.5f,-0.5f);
        glEnd();

        /* 交换缓存 */
        glfwSwapBuffers(w);

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

    glfwTerminate();

    std::cout << "End" << std::endl;

    return a.exec();
}

这里直接调用glfw3库的函数,生成windows程序

三、输出

打印信息如下:

程序输出如下:

总结

本文主要介绍opengl下使用glfw3创建的第一个图形程序(QT)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值