ZBLOG

opengl使用示例

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

准备工作

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

示例代码

  1. 主文件 main.cpp
  1. #include <QApplication>
  2. #include "openglwidget.h"
  3. int main(int argc, char *argv[]) {
  4. QApplication app(argc, argv);
  5. OpenGLWidget window;
  6. window.resize(800, 600);
  7. window.show();
  8. return app.exec();
  9. }
  1. OpenGL Widget 文件 openglwidget.h
  1. #ifndef OPENGLWIDGET_H
  2. #define OPENGLWIDGET_H
  3. #include <QOpenGLWidget>
  4. #include <QOpenGLFunctions>
  5. class OpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions {
  6. Q_OBJECT
  7. public:
  8. explicit OpenGLWidget(QWidget *parent = nullptr);
  9. ~OpenGLWidget();
  10. protected:
  11. void initializeGL() override; // 初始化 OpenGL
  12. void resizeGL(int w, int h) override; // 窗口大小改变时调用
  13. void paintGL() override; // 绘制函数
  14. private:
  15. float angle; // 三角形旋转角度
  16. };
  17. #endif // OPENGLWIDGET_H
  1. OpenGL Widget 实现文件 openglwidget.cpp
  1. #include "openglwidget.h"
  2. #include <QTimer>
  3. OpenGLWidget::OpenGLWidget(QWidget *parent)
  4. : QOpenGLWidget(parent), angle(0.0f) {
  5. // 设置定时器以更新画面
  6. QTimer *timer = new QTimer(this);
  7. connect(timer, &QTimer::timeout, this, [this]() {
  8. angle += 1.0f; // 每次更新增加角度
  9. update(); // 请求重绘
  10. });
  11. timer->start(16); // 大约60帧每秒
  12. }
  13. OpenGLWidget::~OpenGLWidget() {}
  14. void OpenGLWidget::initializeGL() {
  15. initializeOpenGLFunctions();
  16. }
  17. void OpenGLWidget::resizeGL(int w, int h) {
  18. glViewport(0, 0, w, h); // 更新视口
  19. }
  20. void OpenGLWidget::paintGL() {
  21. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清空颜色和深度缓冲
  22. glLoadIdentity();
  23. glTranslatef(0.0f, 0.0f, -6.0f);
  24. glRotatef(angle, 0.0f, 1.0f, 0.0f);
  25. glBegin(GL_TRIANGLES);
  26. glColor3f(1.0f, 0.0f, 0.0f);
  27. glVertex3f(-1.0f, -1.0f, 1.0f);
  28. glColor3f(0.0f, 1.0f, 0.0f);
  29. glVertex3f(1.0f, -1.0f, 1.0f);
  30. glColor3f(0.0f, 0.5f, 1.5);
  31. glVertex3f( 00.f , +1.f , +1.f );
  32. glEnd();
  33. }

编译与运行

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

  1. QT += widgets opengl

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

注意事项

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


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?