#include "mainwidget.h"
#include <QMouseEvent>
#include <QDebug>
#include <math.h>
MainWidget::MainWidget(QWidget *parent) :
QGLWidget(parent),
angularSpeed(0)
{
}
MainWidget::~MainWidget()
{
deleteTexture(texture);
}
void MainWidget::mouseMoveEvent(QMouseEvent *e)
{
diffMove = QVector2D(e->localPos()) - mousePressPosition;
}
//! [0]
void MainWidget::mousePressEvent(QMouseEvent *e)
{
// Save mouse press position
mousePressPosition = QVector2D(e->localPos());
}
void MainWidget::mouseReleaseEvent(QMouseEvent *e)
{
// Mouse release position - mouse press position
QVector2D diff = QVector2D(e->localPos()) - mousePressPosition;
// Rotation axis is perpendicular to the mouse position difference
// vector
QVector3D n = QVector3D(diff.y(), diff.x(), 0.0).normalized();
// Accelerate angular speed relative to the length of the mouse sweep
qreal acc = d
opengl
最新推荐文章于 2022-01-17 11:14:29 发布
这个示例展示了如何使用OpenGL进行3D图形的旋转操作,并结合鼠标事件实现交互。通过QGLWidget继承类MainWidget,处理鼠标按下、移动和释放事件,根据鼠标移动距离计算旋转轴和角速度,实现3D立方体的旋转效果。同时,使用顶点和片段着色器处理纹理映射,并启用深度测试和背面剔除以提高渲染质量。
摘要由CSDN通过智能技术生成