QT一个最简单的openGL例子

Posted xieqianli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT一个最简单的openGL例子相关的知识,希望对你有一定的参考价值。

创建一个基类为widget的工程

把文件夹glut64放到代码目录下,文件夹包含以下文件

freeglut.dll

freeglut.lib

glut.h

freeglut.h

freeglut_ext.h

freeglut_std.h

在工程文件*.pro中增加以下几行

win32: LIBS += -L$$PWD/glut64/ -lfreeglut
INCLUDEPATH += $$PWD/glut64
DEPENDPATH += $$PWD/glut64

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QOpenGLWidget>
#include <QOpenGLFunctions>

class Widget : public QOpenGLWidget, protected QOpenGLFunctions

    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();

    void initializeGL();
    void resizeGL(int w, int h);
    void paintGL();
;

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "glut64\freeglut.h"

Widget::Widget(QWidget *parent)
    : QOpenGLWidget(parent)



Widget::~Widget()




void Widget::initializeGL()

    initializeOpenGLFunctions();
    glClearColor(0.0, 0.0, 0.0,1.0);


void Widget::resizeGL(int w, int h)

    glViewport(0, 0, (GLsizei)w, (GLsizei)h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(-10,10,-10,10);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();


void Widget::paintGL()

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glLineWidth(5.0);
    glColor3d(0.0,1.0,1.0);

    glBegin(GL_LINE_LOOP);
    glVertex2d(-8.0, -8.0);
    glVertex2d(8.0, -8.0);
    glVertex2d(0.0, 8.0);
    glEnd();

 

以上是关于QT一个最简单的openGL例子的主要内容,如果未能解决你的问题,请参考以下文章

QT最简单的QT代码结构

QT最简单的QT代码结构

关于openGL中glew使用的简单问题

在 OpenGL 中使用 PNG 纹理的最快最简单方法

OpenGL - 用纹理绘制正方形的最简单方法

史上最简单OpenGL+VS2017环境配置