qt5.9.2 下配置opengl!(有坑)

7 篇文章 0 订阅
1 篇文章 0 订阅

OpenGL是一个应用程序编程接口API,其实就是一个方便访问计算机图形硬件的封装库。

有几个概念需要说下:

模型:由几何里点线面组合而成的数据集

渲染:计算机从模型创建出图形的过程。

着色:被编译为GPU执行的代码。Opengl包含编译工具,把着色的源码编译。

OpenGL是一个操作计算机图形的集合,它包含多种库。常见的如glfw、glut、freeglut等。

本文通过下载freeglut来初步学习了解其原理。

1 下载安装

freeglut库里面有两个版本,都包含32和64位的,根据Qt的配置自己选择:

下载地址:http://www.transmissionzero.co.uk/software/freeglut-devel/ 

 2 配置

msvc环境配置(64位):

1) .解压后将freeglut文件中的bin文件下的x64文件下的freeglut.dll,拷贝至QT的安装路径   D:\Qt\Qt5.2.4\5.2.4\msvc2017_64\bin目录下;
2) .解压后将freeglut文件中的include文件下的GL文件夹,拷贝至QT的安装路径D:\Qt\Qt5.2.4\5.2.4\msvc2017_64\include目录下;
3) .解压后将freeglut文件中的lib文件下的x64文件下的freeglut.lib,安装路径D:\Qt\Qt5.2.4\5.2.4\msvc2017_64\lib目录下;

MinGW环境配置(32位版本):

1) .解压后将freeglut文件中的bin文件下的freeglut.dll,拷贝至QT的安装路径D:\Qt\Qt5.2.4\5.9.4\mingw53_32\bin目录下;
2) .解压后将freeglut文件中的include文件下的GL文件,拷贝至QT的安装路径D:\Qt\Qt5.2.4\5.2.4\mingw53_32\include目录下;
3) .解压后将freeglut文件中的lib文件下的libfreeglut.a、libfreeglut_static.a文件,拷贝至QT的安装路径D:\Qt\Qt5.2.4\5.2.4\mingw53_32\lib目录下;

 上面那样配置的好处是在编译的时候可以不用 -LD:/Qt/Qt5.9.2/5.9.2/msvc2017_64/lib 指定库的目录,方便使用。

 3 使用

#第三种就是多个库在同一个文件夹下的时候,连接使用
LIBS += -LD:/Qt/Qt5.9.2/5.9.2/msvc2017_64/lib -lfreeglut -lOpenGL32

MinGW版本:

win32:LIBS += -lOpengl32 \
                          -lglu32 \
                          -lglut \
                          -lfreeglut

使用库时没有前缀lib及后缀.a .lib,但有前缀-l

最后在cpp中加入#include <GL/glut.h>,这样就可以使用glut中的函数了。

附上使用的源码:

#include "GL/glut.h"

// 初始化参数
void init() {
    glClearColor(0.1, 0.1, 0.4, 0.0);
    glShadeModel(GL_SMOOTH);
}

// 绘图回调函数
void display() {

    // 清除之前帧数据
    glClear(GL_COLOR_BUFFER_BIT);

    // 绘制三角形
    glBegin(GL_TRIANGLES);
    glColor3f(1, 0, 0);
    glVertex3f(-1, -1, -5);
    glColor3f(0, 1, 0);
    glVertex3f(1, -1, -5);
    glColor3f(0, 0, 1);
    glVertex3f(0, 1, -5);
    glEnd();
    // 执行绘图命令
    glFlush();
}

// 窗口大小变化回调函数
void reshape(int w, int h) {
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(60.0, (GLfloat)w/(GLfloat)h, 0.1, 100000.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

int main(int argc, const char * argv[]) {
    // 初始化显示模式
    glutInit(&argc, const_cast<char **>(argv));
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

    // 初始化窗口
    glutInitWindowSize(500, 500);
    glutInitWindowPosition(100, 100);
    glutCreateWindow(argv[0]);

    init();
    glutReshapeFunc(reshape);
    glutDisplayFunc(display);

    // 开始主循环绘制
    glutMainLoop();
    return 0;
}


 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

love_0_love

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值