ZBLOG

opengl使用示例

下面是一个简单的 OpenGL 示例,使用 Qt 进行窗口管理和渲染。这个示例将创建一个窗口,并在其中绘制一个简单的三角形。

准备工作

确保你已经安装了 Qt 和 OpenGL 库。可以使用 Qt Creator 创建新的 Qt Widgets 应用程序项目。

示例代码

  1. 主文件 main.cpp
#include <QApplication>
#include "openglwidget.h"

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

    OpenGLWidget window;
    window.resize(800, 600);
    window.show();

    return app.exec();
}
  1. OpenGL Widget 文件 openglwidget.h
#ifndef OPENGLWIDGET_H
#define OPENGLWIDGET_H

#include <QOpenGLWidget>
#include <QOpenGLFunctions>

class OpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions {
    Q_OBJECT

public:
    explicit OpenGLWidget(QWidget *parent = nullptr);
    ~OpenGLWidget();

protected:
    void initializeGL() override; // 初始化 OpenGL
    void resizeGL(int w, int h) override; // 窗口大小改变时调用
    void paintGL() override; // 绘制函数

private:
    float angle; // 三角形旋转角度
};

#endif // OPENGLWIDGET_H
  1. OpenGL Widget 实现文件 openglwidget.cpp
#include "openglwidget.h"
#include <QTimer>

OpenGLWidget::OpenGLWidget(QWidget *parent)
    : QOpenGLWidget(parent), angle(0.0f) {
    
    // 设置定时器以更新画面
    QTimer *timer = new QTimer(this);
    connect(timer, &QTimer::timeout, this, [this]() {
        angle += 1.0f; // 每次更新增加角度
        update();      // 请求重绘
    });
    
    timer->start(16); // 大约60帧每秒
}

OpenGLWidget::~OpenGLWidget() {}

void OpenGLWidget::initializeGL() {
    initializeOpenGLFunctions();
}

void OpenGLWidget::resizeGL(int w, int h) {
   glViewport(0, 0, w, h); // 更新视口
}

void OpenGLWidget::paintGL() {
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清空颜色和深度缓冲
   
   glLoadIdentity(); 
   glTranslatef(0.0f, 0.0f, -6.0f); 
   glRotatef(angle, 0.0f, 1.0f, 0.0f); 

   glBegin(GL_TRIANGLES); 
       glColor3f(1.0f, 0.0f, 0.0f); 
       glVertex3f(-1.0f, -1.0f,  1.0f); 
       
       glColor3f(0.0f, 1.0f, 0.0f); 
       glVertex3f(1.0f, -1.0f,  1.0f);
       
       glColor3f(0.0f, 0.5f, 1.5);
       glVertex3f(  00.f ,     +1.f ,     +1.f );
   glEnd(); 
}

编译与运行

在你的 .pro 文件中添加对 OpenGl 的支持:

QT += widgets opengl

然后编译并运行项目,你会看到一个窗口,里面有一个随着时间旋转的三角形。

注意事项

  • 确保你的系统支持 OpenGLEnvironment。
  • 如果你在不同的平台上开发(如 Windows、macOS 或 Linux),可能需要额外的设置。
  • 根据你的需求,可以扩展这个基本示例,添加更多功能,如纹理、灯光等。


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=19714

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?