前言
近期花了一些时间自学了openGL的基础知识,因为在网页中看到了一个不错的水波特效,并且在github上找到了使用javascript和webGL实现的代码,就想在QT中实现一个类似的,不知道是不是我的搜索方法不对,找到了一些qt水波特效的实现,但抛开应用容易与否不谈,总觉得特效本身的效果不如js中的这个效果好,而且也没找到使用这种方法实现特效的QT程序(有一个使用该方法但没使用openGL的)。
经过一段时间的改进,这个动态水波特效背景已经可以在一些场景下简便的使用了,本文会介绍代码的具体用法。
本文会给出demo的github地址,并简单讲解实现特效的原理和方式。
效果图
环境
windows7
QT Creator 4.5.1
QT 5.10.1 MSVC2017_x64
需要支持openGL,现代操作系统一般应该都是支持的,但是有可能存在版本问题。
完整代码
项目代码已上传至github
主要参考的js项目代码jquery.ripples
另一个更为精彩但可能不是那么方便应用的demo webgl-water
使用说明
从github下载代码,并且将ripplewidget.h和ripplewidget.cpp添加到你的项目工程中。
举例来说,假设你想在名为Dialog的继承自QDialog类的对话框中添加一个水波背景,你可以如下编写代码:
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
#include "ripplewidget.h"
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(