Qt OpenGL
文章平均质量分 57
QOpenGLWidget专栏
杨发荷
自己编写了一套插件框架,并在上面开发了数套小软件,当然后期会一直更新。发布的软件如果有童鞋需要可以联系我,并且可以定制功能。
展开
-
QOpenGLWidget 第八篇 手动绘制点、线、三角形
上一篇介绍了如何随机生成线,这一片,将介绍如何手动绘制线。 手动绘制线就是根据鼠标在绘图区内点击鼠标,从而绘制线段,由于我们目前所处的状态是透视投影,也就是近大远小。而且看到的并不是一个二维平面,而是三维的,所以鼠标获取的xy坐标与实际绘制出来的是不一样。下面我们进行代码编写:1、在鼠标状态枚举值中添加一个获取点的枚举之后:kMousePoint = 4;enum MouseStatusFlag{ kMouseNone = 0, kMouseMove = 1, kMo...原创 2021-10-19 17:02:13 · 3220 阅读 · 0 评论 -
QOpenGLWidget第七篇 vao、vbo随机绘制线
在QOpenGLWidget第六篇中我们实现了投影转换和相机空间变换,接下来我们继续往下学习vao、vbo随机绘制线; 用vao绘制线有两种方法,第一种,一个vao一个vbo,但是给vbo分配足够大的内存,然后往vbo中写入随机生成的顶点数据;第二种每一条线段对应一个vao和vbo。在这里我们使用第二种方法。 在前面的章节中我们都是使用QOpenGLVertexBuffer和QOpenGLBuffer实现绘制三棱锥,在后面的章节中我们将不再使用QOpenG...原创 2021-10-19 15:13:08 · 1536 阅读 · 1 评论 -
QOpenGLWidget第六篇(简化相机类)
1、在第五篇中我们实现了一个OpenGLMVP投影转换类以及OpenGLCamera相机类,在这里我们用另一个已有的QMatrix类来替代这两个投影变换以及相机空间类。在QMatrix矩阵类中,已经存在接口perspective来设置透视投影和otho正射投影。而且还存在接口lookAt这个类来设置观察方向。有了这三个接口,那我们就可以完全去掉投影转换以及相机空间。改动地方:1、在OpenGLWidget头文件中将 OpenGLCamera *m_pCamera; 替换为QMatrix4x4原创 2021-10-19 11:29:27 · 1254 阅读 · 0 评论 -
QOpenGLWidget 第五篇(相机空间)
OpenGLWidget头文件:#ifndef OPENGLWIDGET_H#define OPENGLWIDGET_H#include "QtGui/QOpenGLBuffer"#include "QtWidgets/QOpenGLWidget"#include "QtGui/QOpenGLVertexArrayObject"#include "QtGui/QOpenGLFunctions_4_5_Core"class OpenGLCamera;class QOpenGLShade原创 2021-10-17 21:25:21 · 681 阅读 · 0 评论 -
QOpenGLWidget 第四篇(透视投影)
OpenGLWidget 头文件:#ifndef OPENGLWIDGET_H#define OPENGLWIDGET_H#include "QtGui/QOpenGLBuffer"#include "QtWidgets/QOpenGLWidget"#include "QtGui/QOpenGLVertexArrayObject"#include "QtGui/QOpenGLFunctions_4_5_Core"class QOpenGLShaderProgram;class Op原创 2021-10-17 21:15:54 · 683 阅读 · 0 评论 -
QOpenGLWidget 第三篇(旋转平移缩放)
头文件#ifndef OPENGLWIDGET_H#define OPENGLWIDGET_H#include "QtGui/QOpenGLBuffer"#include "QtWidgets/QOpenGLWidget"#include "QtGui/QOpenGLVertexArrayObject"#include "QtGui/QOpenGLFunctions_4_5_Core"class QOpenGLShaderProgram;class OpenGLWidget :原创 2021-10-17 17:33:51 · 2017 阅读 · 1 评论 -
QOpenGLWidget 第二篇EBO、VBO、VAO(绘制三棱锥)
头文件#ifndef OPENGLWIDGET_H#define OPENGLWIDGET_H#include "QtGui/QOpenGLBuffer"#include "QtWidgets/QOpenGLWidget"#include "QtGui/QOpenGLVertexArrayObject"#include "QtGui/QOpenGLFunctions_4_5_Core"class QOpenGLShaderProgram;class OpenGLWidget :.原创 2021-10-17 16:16:36 · 1211 阅读 · 2 评论 -
QOpenGLWidget 第一篇(VBO绘制三角形)
头文件#ifndef OPENGLWIDGET_H#define OPENGLWIDGET_H#include "QtGui/QOpenGLBuffer"#include "QtWidgets/QOpenGLWidget"#include "QtGui/QOpenGLFunctions_4_5_Core"class QOpenGLShaderProgram;class OpenGLWidget : public QOpenGLWidget , protected QOpenGLF原创 2021-10-17 16:01:55 · 871 阅读 · 4 评论 -
Qt程序出现(ig9icd64.dll) (XXXXX.exe 中)处有未经处理的异常: 0xC000041D: 用户回调期间遇到未经处理的异常。。
我也是被自己逼疯了,中午还在一边运行程序,一边写博客。休息了一会,再运行程序,发现好好地程序居然跑不起来(估计也是去休息了),居然出现这个bug。于是下午进行了各种调试,注释代码,最终确定了问题在QOpenGLWidget里面。但是这个我也动不了,于是再次找原因,找啊找,找了一下午,突然灵光一闪想起来以前写的代码,貌似在使用QOpenGL之前貌似还要写一段代码。于是又去找以前写的代码,终于...原创 2018-11-13 19:46:47 · 12993 阅读 · 7 评论