Qt5.12+OpenGL 计算机图形学(第四版)第3章例子 搭建模版工程

本文档介绍了如何使用Qt5.12和OpenGL在Qt Creator中搭建计算机图形学(第四版)第3章的练习模板工程。通过创建Qt Widgets Application项目,设置OpenGLWidget类并集成OpenGL库,实现了章节例子的代码迁移。详细步骤包括项目创建、库配置、类继承和成员函数编写,最终展示了运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计算机图形学(第四版)使用的是GLUT作为窗口管理工具,而本人工作中用得更多的是Qt,所以打算使用Qt5.12+OpenGL来完成计算机图形学(第四版)中的所有练习,下面是第3章的例子在Qt中的实现过程。

1. 使用QtCreater创建新项目,选择“Qt Widgets Applicationt”。

2. 项目名称为“OpenGL_exam1”,kits选择“Desktop Qt 5.12.1 MingW”或者使用自己安装的Qt版本。

3. 类名设置为“OpenGLWidget”,基类选择QWidget,点击完成,创建项目。

4. 打开OpenGL_exam1.pro文件,加入OpenGL库

LIBS += -lOpengl32 -lglu32

5. 打开OpenGLWidget.h文件,修改class OpenGLWidget继承的基类为多重继承:

class OpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions

6. 修改构建函数为:

OpenGLWidget::OpenGLWidget(QWidget *parent)
    : QOpenGLWidget(parent)
{

}

7. 在类定义中加入几个成员函数定义:

protected:
    void initializeGL();
    void paintGL();
    void resizeGL(int w, int h);
<think>嗯,用户想知道Qt 5.12.9和Qt 4.9之间的主要区别,包括版本变更日志和功能对比。首先,我需要回忆这两个版本的大致发布时间。Qt 4.9应该比较旧了,可能是在Qt5之前的一个版本,而Qt5.12.9是Qt5的长期支持版本之一。接下来,我需要从架构、模块变化、功能增强、兼容性等方面进行比较。 首先,Qt5相对于Qt4进行了架构上的重大调整。比如,Qt5引入了QML和Qt Quick,这应该是Qt4所没有的。另外,Qt5可能对图形渲染系统进行了优化,比如使用Scene Graph来提升性能。还有,Qt5可能采用了新的构建系统,比如qmake的改进,或者模块化拆分,让开发者可以按需选择模块。 然后,模块的变化。Qt4可能有一些模块在Qt5中被废弃或重组。比如,Qt5将一些图形相关的功能移到Qt GUI模块之外,或者新增了Qt Multimedia模块,支持更多的多媒体功能。另外,Qt5可能引入了新的模块,如Qt WebEngine,取代了Qt WebKit,这点需要注意。 功能对比方面,Qt5可能支持更多的现代特性,比如更好的OpenGL集成,C++11的支持,以及跨平台支持的增强,比如对Android和iOS的更好支持。另外,Qt5可能在网络模块、SSL支持、数据库驱动等方面有所改进,比如支持更高版本的OpenSSL,或者更多的数据库驱动。 兼容性方面,用户可能关心从Qt4迁移到Qt5需要做哪些改动。比如,某些头文件的位置变化,或者API的废弃和替换。例如,QDesktopServices在Qt4和Qt5中的变化,或者字符串处理函数的调整。 然后需要查看用户提供的引用内容,看是否有相关信息可以引用。引用3提到Qt5.12在Android上构建时需要特定的OpenSSL版本,而引用4涉及环境变量配置,可能说明Qt5在嵌入式环境中的配置方式有所变化。引用2提到了编译时的错误处理,可能涉及C++11或模板的变化,但不确定是否直接相关。引用1是关于修改qmake.conf,可能说明构建系统的调整。 综合这些信息,我需要组织出几个主要区别的方面:架构与模块、图形系统、语言支持、跨平台能力、API变化、构建系统、社区支持等。每个部分需要简明扼要地对比,并引用相关的内容支持。 另外,用户可能需要知道迁移时的注意事项,比如兼容性层或需要修改的代码部分。例如,Qt5删除了某些过时的类,或者改变了信号槽的语法,推荐使用新的连接方式。 最后,生成相关问题,可能需要涉及迁移步骤、新功能应用、兼容性处理等。</think>### Qt 5.12.9 与 Qt 4.9 主要差异对比 #### 1. **架构与模块化** - **Qt5 的模块化拆分** Qt5 将核心功能拆分为更细粒度的模块(如 `QtCore`、`QtGui`、`QtWidgets`),而 Qt4 的模块相对集中。例如,Qt5 中 `QtWidgets` 从 `QtGui` 中独立,支持更灵活的依赖管理[^4]。 - **QML 与 Qt Quick 的引入** Qt5 深度集成 QML(声明式语言)和 Qt Quick 2,用于现代 UI 开发,而 Qt4 主要依赖传统的 Widgets 框架。 #### 2. **图形系统升级** - **Scene Graph 渲染引擎** Qt5 使用基于 OpenGL 的 Scene Graph 实现高效图形渲染,支持硬件加速;Qt4 的图形系统基于传统的 QPainter,性能较低。 - **OpenGL 支持增强** Qt5 默认要求 OpenGL ES 2.0+,而 Qt4 仅支持 OpenGL 1.x 固定管线。 #### 3. **跨平台与移动端支持** - **Android/iOS 适配** Qt5 提供对 Android 和 iOS 的官方支持(需配置 NDK 和工具链),例如 Qt5.12 支持 OpenSSL 1.0.* 构建 Android 应用[^3],而 Qt4 仅支持嵌入式 Linux 和桌面平台。 - **Web 引擎** Qt5 使用基于 Chromium 的 Qt WebEngine 替代 Qt4 的 Qt WebKit,性能和安全特性显著提升。 #### 4. **语言与标准支持** - **C++11 要求** Qt5 要求编译器支持 C++11 标准(如 `constexpr` 关键字的使用需注意兼容性[^2]),而 Qt4 仅需 C++98。 - **QString 优化** Qt5 的字符串处理更高效,并支持 Unicode 6.1+。 #### 5. **API 变化与兼容性** - **废弃旧 API** Qt5 移除了 Qt4 中部分过时 API(如 `QDesktopServices::storageLocation` 改为 `QStandardPaths`)。 - **信号槽语法** Qt5 推荐使用新式信号槽连接语法(`connect(sender, &Sender::signal, receiver, &Receiver::slot)`),替代 Qt4 的字符串宏。 #### 6. **构建与配置** - **qmake 配置差异** Qt5 的 `qmake.conf` 文件需适配目标平台(如交叉编译时指定 OpenSSL 路径[^1]),而 Qt4 的配置较为简单。 - **环境变量调整** Qt5 对 Linux 嵌入式环境的配置更复杂,例如需明确指定 `QT_QPA_PLATFORM` 和字体路径。 #### 7. **维护与社区支持** - **Qt5.12 LTS 长期支持** Qt5.12.9 是长期支持版本(维护至 2023 年),而 Qt4.9 已停止官方更新,社区支持有限。 --- ### 版本变更日志要点 - **Qt5.12 关键更新**:Android 支持 OpenSSL 1.0.2、改进的 High-DPI 缩放、WebAssembly 实验性支持[^3]。 - **Qt4.9 末期特性**:仅修复关键漏洞,无新功能迭代。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值