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主程序编写
#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)。

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

1万+

被折叠的 条评论
为什么被折叠?



