本章节通过texture案例,演示基于Qt + OpenGL调用GPU核心进行图形渲染。
案例说明
本案例使用Qt提供的OpenGL模块,该模块是对OpenGL原生API进一步的封装并支持GUI编程,使得在Qt应用程序中使用OpenGL变得更加容易。
Qt程序在调用OpenGL模块的API时,会调用官方提供的OpenGL库,该库通过底层驱动调用GPU资源来进行图像的渲染。
图 1 程序结构框架
案例测试
进入评估板文件系统,将texture案例的ARM端Qt程序镜像拷贝至评估板文件系统任意目录下。请在Qt程序镜像所在路径下执行如下命令。
Target# ./textures --platform wayland
图 2
Qt程序运行后,显示界面如下,使用鼠标点击任意一个骰子,被选中的骰子将自动进行旋转。
图 3
案例编译
进入textures工程源码目录,执行qmake命令生成Makefile文件,配置交叉编译工具链环境变量,再执行make命令编译生成可在评估板上正常运行的ARM端Qt程序镜像,如下图所示。
Host# cd /home/tronlong/Demo/qt-demos/textures/src
Host# source /home/tronlong/RK3562/rk3562-buildroot-2021.11-sdk-v1.0/buildroot/output/rockchip_rk3562/host/environment-setup
Host# qmake
Host# make
图 4
图 5
关键代码
初始化主窗口,创建6个Qopenglwidget,并开启定时器。
图 6
初始化OpenGL资源。
图 7
处理QMouseEvent事件。
图 8
使用OpenGL进行绘制。
图 9
OpenGL部件大小调整时,触发resizeGL事件。
图 10