qt opengl lesson5 绘制3d立体旋转图形

继续上一篇lesson,先将3d立体各个面写完,然后进行旋转,感觉每个面单独写比较费时,这大概是3d比较麻烦和难以理解的地方,需要建立良好的空间想象力。

#-------------------------------------------------
#
# Project created by QtCreator 2017-01-20T22:32:22
#
#-------------------------------------------------

QT       += core gui opengl

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = lesson5
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0


SOURCES += main.cpp \
    myglwidget.cpp

HEADERS  += \
    myglwidget.h

LIBS += -lglut -lGLU

#ifndef MYGLWIDGET_H
#define MYGLWIDGET_H
#include <QGLWidget>
#include <QKeyEvent>
#include <QTimerEvent>

class MyGLWidget : public QGLWidget {
    Q_OBJECT
public:
    explicit MyGLWidget(QWidget *parent = 0);
    ~MyGLWidget();
protected:
    virtual void paintGL();
    virtual void initializeGL();
    virtual void resizeGL(int width, int height);
    virtual void timerEvent(QTimerEvent *event);
    virtual void keyPressEvent(QKeyEven
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Qt6和OpenGL绘制3D Druaga,可以按照以下步骤进行: 1. 创建Qt Widgets应用程序项目。 2. 添加Qt6的OpenGL模块和Qt6 Widgets模块。 3. 导入OpenGL头文件,并为OpenGL函数创建指针变量。 4. 实现OpenGL的初始化函数,用于设置OpenGL状态。 5. 实现绘制函数,用于绘制3D对象。 6. 在Qt的主窗口中创建OpenGL窗口,并在其上方插入其他Qt控件。 以下是一个简单的示例,演示如何使用Qt6和OpenGL绘制3D Druaga: ``` #include <QtWidgets/QMainWindow> #include <QtGui/QSurfaceFormat> #include <QtGui/QOpenGLFunctions> #include <QtGui/QOpenGLShaderProgram> #include <QtOpenGL/QGLWidget> class GLWidget : public QGLWidget, protected QOpenGLFunctions { public: GLWidget(QWidget *parent = nullptr) : QGLWidget(parent) {} protected: void initializeGL() override { initializeOpenGLFunctions(); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); } void resizeGL(int w, int h) override { glViewport(0, 0, w, h); } void paintGL() override { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0f, 1.0f, 1.0f); glBegin(GL_TRIANGLES); glVertex3f(0.0f, 0.5f, 0.0f); glVertex3f(-0.5f, -0.5f, 0.0f); glVertex3f(0.5f, -0.5f, 0.0f); glEnd(); } }; class MainWindow : public QMainWindow { public: MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) { QSurfaceFormat format; format.setDepthBufferSize(24); QSurfaceFormat::setDefaultFormat(format); GLWidget *glWidget = new GLWidget(this); setCentralWidget(glWidget); } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } ``` 在此示例中,我们创建了一个GLWidget类,它继承自QGLWidget和QOpenGLFunctions。在initializeGL函数中,我们使用OpenGL函数指针初始化OpenGL状态。在resizeGL函数中,我们设置视口大小。在paintGL函数中,我们使用OpenGL函数绘制一个三角形。 然后,在MainWindow类中,我们创建一个GLWidget,并将其设置为主窗口的中心小部件。 这只是一个简单的示例,您可以根据需要进行扩展,以支持更复杂的OpenGL绘图。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值