自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(611)
  • 资源 (1)
  • 收藏
  • 关注

原创 ViewerBase类suggestBestThreadingModel()函数分析

博文,以知道各个线程模型的含义及区别。在理解本函数之前,需先学习。

2024-08-11 16:59:07 248

原创 osg、OPenGL中的预编译概念

有些数据如果提前进行编译可以有效地提升效率,例如为几何体 数据创建显示列表(Display List),以及将纹理对象提前加载到纹理内存。

2024-08-10 10:22:15 80

原创 osgGA::PointerData结构体作用及各成员含义

【代码】osgGA::PointerData结构体作用及各成员含义。

2024-08-06 17:33:12 258

原创 osg相机排序规则

排序原则根据摄像机的渲染顺序而定(setRenderOrder函数的第1个参数)。设置为 PRE_RENDER级别的摄像机排序在最前,而POST_RENDER级别的摄像机排序在最后;同 一级别的摄像机根据setRenderOrder函数中传入的第2个参数设置先后顺序,排序数较小的摄像机 在前。osg在很多地方对获取到的多个相机通过通过Camera::setRenderOrder进行设置函数进行了排序设置。

2024-08-05 19:06:18 224

原创 LineSegmentIntersector::Intersection结构体各成员含义

osgUtil::Intersector有几个子类,如下:每个子类表示不同的求交器。所谓求交器就是判定和物体相交的类,通过这些类可以很方便的得出交点、实现拾取功能等。LineSegmentIntersector类是osgUtil::Intersector其中的一个子类,其表示线段求交器,即通过线段和三维场景中的某个物体相交,该类一般和osgUtil::IntersectionVisitor即求交访问器类一起使用,从而得出交点、实现拾取功能等。

2024-07-22 18:41:33 903

原创 LineSegmentIntersectorUtils::IntersectFunctor::intersect源码分析

osgUtil::Intersector有几个子类,如下:每个子类表示不同的求交器。所谓求交器就是判定和物体相交的类,通过这些类可以很方便的得出交点、实现拾取功能等。LineSegmentIntersector类是osgUtil::Intersector其中的一个子类,其表示线段求交器,即通过线段和三维场景中的某个物体相交,该类一般和osgUtil::IntersectionVisitor即求交访问器类一起使用,从而得出交点、实现拾取功能等。

2024-07-17 18:32:13 884

原创 osgUtil::LineSegmentIntersector类源码分析(二)

osgUtil::Intersector有几个子类,如下:每个子类表示不同的求交器。所谓求交器就是判定和物体相交的类,通过这些类可以很方便的得出交点、实现拾取功能等。LineSegmentIntersector类是osgUtil::Intersector其中的一个子类,其表示线段求交器,即通过线段和三维场景中的某个物体相交,该类一般和osgUtil::IntersectionVisitor即求交访问器类一起使用,从而得出交点、实现拾取功能等。

2024-07-16 12:20:20 935

转载 射线和三角形的相交检测(ray triangle intersection test)

射线和三角形的相交检测是游戏程序设计中一个常见的问题,最典型的应用就是拾取(Picking),本文介绍一个最常见的方法,这个方法也是DirectX中采用的方法,该方法速度快,而且存储空间少。先讲述理论,然后给出对应的代码实现。

2024-07-13 17:22:43 66

转载 空间直线与球面的相交算法

对于知道线段的起点O和终点E,显然方向向量为D=E−O。这时,根据射线的向量方程,线段上某一点P为。以上是空间直线的标准式方程(点向式方程)。并且,采取这种公式描述还有个好处,参数t的取值范围为0到1,否则就在直线的两个端点之外。

2024-07-08 19:04:43 68

原创 将QComboBox下拉项中的文本居中、居右

QComboBox下拉项中的文本默认是居左的,如下:有时需要将下拉项中的文本居中、居右。如何实现?

2024-07-08 12:32:46 576

原创 osgUtil::LineSegmentIntersector类源码分析(一)

osgUtil::Intersector有几个子类,如下:每个子类表示不同的求交器。所谓求交器就是判定和物体相交的类,通过这些类可以很方便的得出交点、实现拾取功能等。LineSegmentIntersector类是osgUtil::Intersector其中的一个子类,其表示直线求交器,即通过直线和三维场景中的某个物体相交,该类一般和osgUtil::IntersectionVisitor即求交访问器类一起使用,从而得出交点、实现拾取功能等。。

2024-07-06 14:37:11 714

原创 观察矩阵(View Matrix)、投影矩阵(Projection Matrix)、视口矩阵(Window Matrix)及VPM矩阵及它们之间的关系

而这个所谓的窗口坐标windowCoord,实际上也就是世界坐标系下的坐标值worldCoord 在指定的摄像机视口中(也就是我们的屏幕上)对应的平面位置。怎么样,不知不觉中,我 们已经实现了gluProject函数所完成的功能了,而反转这三个步骤就可以得到视口中指定位置所对应的世界坐标了(也就是gluUnProject的工作)。V表示摄像机的观察矩阵(因此Camera 类也专门提供了。

2024-07-06 12:31:36 496

原创 osg::Stats类用法及该类源码剖析

Stats是英文单词statistics的简写。顾名思义,就知道osg::Stats是osg中用来统计某些信息的类,如:帧率等,在osg中很多地方用到该类统计某些信息,如下代码是摘自osg的如下代码是摘自osg的本博文讲述osg::Stats类用法及对其实现进行源码剖析。

2024-06-24 18:06:07 132

转载 直线参数方程推导与理解

设定点A(x0,y0),经过点A的直线倾斜角记为θ,点P为直线上一动点,记AP=t, 并规定:当AP方向向上(左上或右上)时,t>0;设定点A(x0,y0),经过点A的直线倾斜角记为θ点P为直线上一动点,记|AP|=t,设定点A(x0,y0),经过点A的直线倾斜角记为θ,点P为直线上一动点,记|AP|=t,设定点A(x0,y0),经过点A的直线倾斜角记为θ点P为直线上一动点,记|AP|=t,设定点A(x0,y0),经过点A的直线倾斜角记为θ点P为直线上一动点,记|AP|=t,

2024-06-22 11:27:05 331

原创 QBrush的setColor函数不能改变画刷颜色的原因及解决方法

如果是QBrush brush;即不带任何参数默认构造出的画刷,其默认属性为Qt:noBrush。若设置为noBrush,之后修改这个brush的颜色,是无法被更改的,不能使用setColor语句修改其颜色。若希望实现画刷从无填充到有填充的转换,可以申明的时候把画刷的属性设置为透明色,然后再调用setColor语句修改其颜色,即像上面的最后一种方法那样。本意是想绘制一个红色矩形,但结果是矩形没有被红色填充,画刷根本就没起作用。

2024-06-17 14:27:36 307

原创 osg中使用public virtual实现虚基类继承的原因及作用

public virtual表示公有虚继承,其有何作用?

2024-06-16 10:56:26 229

原创 C++ virtual public(虚继承类)

由于C++支持多重继承,所以对于一个派生类中有几个直接父类,而几个直接父类中有几个可能分别继承自某一个基类(就是父类的父类),这样在构造最终派生类时,会出现最终派生类中含有多个同一个基类的情况,就会产生二义性的问题(不知道该调用哪个基类的成员变量和函数),为解决此问题,需要使用虚基类,即只对此基类生成一块内存区域,这样最终派生类中就只会含有一个基类了。如果将B、C类改为像如下那样从A类虚拟继承,则不会存在有二义性问题,编译器不会报错。其中D继承自BC,BC分别继承自A,所以A要分别被BC虚拟继承。

2024-06-16 10:35:28 352

原创 Qt实现程序单实例运行(只能运行1个进程)及QSharedMemory用法

在开发时,经常遇到这样的需求或场景:程序只能被启动一次,不能启动多次,启动多次会导致混乱,如:可执行程序用到文件指针、串口句柄等。试想如果存在多个同一个文件的句柄或同一个串口的句柄,就可能在同一时刻对同一文件或串口进行写操作,这样会导致文件内容杂乱、损坏;现实中,当一个串口被一个程序占用时,另外一个程序尝试打开这个串口会报错,因此需要控制程序运行时只能开启一个实例,如果用Qt实现程序单实例运行?

2024-06-06 19:19:06 531

原创 Qt封装ping命令并将ping结果显示到界面

【代码】Qt封装ping命令并将ping结果显示到界面。

2024-05-23 19:18:06 561

原创 Qtcreator断点进入Disassembler(反汇编程序)界面的问题解决

这个问题的原因是工程源码存放的目录含有中文,解决方法是将工程源码放到一个不含中文路径的目录,然后再断点调试,该问题不再出现。无论怎么调试,死活是上面的界面。

2024-05-23 18:51:20 751

原创 QSplineSeries和QLineSeries区别及QSplineSeries点超过坐标轴最大范围问题说明

该类是折线图表类,用来将相邻的两个数据点通过直线连接。

2024-05-21 19:15:56 565

原创 程序在银河麒麟系统下实现开机自启及创建桌面快捷方式

可以看到uavGuarantee.desktop图标变为和uavGuarantee可执行程序图标一样了,且uavGuarantee.desktop文件名变为uavGuarantee文件名了,将uavGuarantee拷贝粘贴到桌面就是快捷方式了,双击该快捷方式,uavGuarantee程序能启动起来。选择“开机启动”,在弹出的“添加自启动程序”对话框程序名编辑框输入程序名称,可随意,但最好取为你的可执行程序的名称;根据你项目的实际,更改上面的第2、3行。

2024-05-15 19:10:27 3263

原创 同一局域网如何从Windows系统拷贝文件到银河麒麟系统

将Windows机器IP换成实际的Windows机器的ip即可访问了。并将权限开放为Everyone,单击“共享”按钮。

2024-05-08 18:58:22 1261

原创 ViewerBase类的_startRenderingBarrier、_endRenderingDispatchBarrier、_endDynamicDrawBlock作用

ViewerBase::_endRenderingDispatchBarrier:渲染结束的一个栅栏标志,用于同步结束所。ViewerBase::_startRenderingBarrier:可以理解为渲染启动的一个栅栏标志,用于同步开。ViewerBase::_endDynamicDrawBlock:用于同步结束所有的动态对象绘制操作,这里所。谓的动态对象,指得是使用Object::setDataVariance 设置为DYNAMIC 的场景对象。始所有的图形设备的线程操作。有的图形设备的线程操作。

2024-05-03 09:31:25 153

转载 OSG多线程模型

如果将场景节点组织扁平化,也就是用一维数组的形式,场景节点的关联关系、空间变换关系、材质关系以属性的方式链接到对象上,给节点"解耦",这种数据结构就能够很方便的进行并行计算了,只是查询\组织父子关系相对树状层次组织方式麻烦了一些,底层实现更为复杂,需要调用其它接口来完成,如果上层API封装好的话,对用户来讲完全是透明的。对节点数据的更新,OSG 将数据变动的节点标记为 dynamic 类型,只有当前帧渲染完全部被标记为动态的节点,才允许下一帧的更新,从而杜绝了数据的不一致性导致系统崩溃的发生。

2024-04-27 17:11:50 118

原创 QTableView通过setColumnWidth改变列宽无效的问题解决

框架,如果对Qt的“模型/视图/委托”框架不懂,本博文很难读懂。读者本机Qt安装目录下的Examples\Qt-XX.XX.XX\widgets\itemviews目录下有很多model/view framework的例子,可以进行自学了解,其中XX.XX.XX为Qt的版本号,如:5.14.1。在开发中,需要设置QTableView、QTableWidget控件的列宽,但通过QTableView类的setColumnWidth函数设置列宽,发现不起作用。

2024-04-24 19:17:41 877 3

原创 C++实现更改8位无符号整形的第n比特位值为1或0

仅仅通过更改需要更改的比特位的值来改变value的值,如:本例中将11110011的第6位(基于0的索引,下同)的值由1改为0,其它位的值保持不变,即改为10110011。这种场景在监控类的需求中很常见:在该类需求中,有时我们获取到了原来的数据帧(包),该数据帧(包)就1个字节即8位,每位表示1个状态,需求要用最新的值更改其中的某位,如何用代码实现?value为8位无符号整形,如何更改其第n比特位的值?

2024-04-07 18:45:56 409

转载 删除QWidget中的所有布局和组件

原文链接:https://blog.csdn.net/ouyangxiaozi/article/details/134106609。4、QLayout::removeWidget(QWidget *widget) 可将某个组件从布局中移除。3、QLayout::itemAt(int index) 可根据索引获取相应的子项;2、QLayout::count() 可获取布局内的子项数量,包括子布局和子组件;1、调用QWidget::layout()可获取组件的布局;

2024-03-28 11:46:42 308

原创 QToolButton的工具提示出现自身border-image背景图的问题解决

用QToolButton贴个图片,用来做个指示灯,当鼠标移动到指示灯,弹出工具提示,以便提示该灯用来干嘛的。即样式表加入类名限定符QToolButton就可以了。QToolButton的第1种样式。QToolButton的第2种样式。

2024-03-26 19:13:47 212

原创 qt使用Windows经典风格,以使QTreeView或QTreeWidge有节点线或加号

其中a为上面定义的QApplication对象。

2024-03-18 13:50:29 531

原创 鼠标在QTreeView、QTableView、QTableWidget项上移动,背景色改变

本博文用到了Qt的model/view framework框架,如果对Qt的“模型/视图/代理”框架不懂,本博文很难读懂。如果不懂这方面的知识,请在Qt Assistant 中输入Model/View Programming 学习了解。读者本机Qt安装目录下的Examples\Qt-XX.XX.XX\widgets\itemviews目录下有很多model/view framework的例子,可以进行自学了解,其中XX.XX.XX为Qt的版本号,如:5.14.1。

2024-03-11 17:25:24 1332

原创 QTreeView、QTableView、QTableWidget等类不发送entered信号问题解决

因为都是从QAbstractItemView继承,故本博文所说的技术点也适用于这些类,本博文以QTableView类来讲解。

2024-03-11 16:38:02 667

原创 CAN 通信测试工具 canutils的candump、cansend等用法举例

【代码】CAN 通信测试工具 canutils的candump、cansend等用法举例。

2024-02-23 11:53:45 3189

原创 通过setPos设置QGraphicsItem在场景中的坐标位置不起作用的问题解决

这句代码,无论把坐标改为啥值,项在场景的位置都不变,即通过setPos函数更改项在场景的坐标位置无效果。解决方法是:在ui->graphicsView的类CGraphicsView中的构造函数中加入。类,类名为CGraphicsView的类对象。其中ui->graphicsView为派生自。

2024-02-20 14:57:11 642

原创 svg图片构造QGraphicsSvgItem对象耗时很长的问题解决

【代码】svg图片构造QGraphicsSvgItem对象效率很慢的解决方法。

2024-02-18 10:41:42 621

原创 CMake生成osg的FFMPEG插件及Windows下不生成VS工程问题解决

在Windows下,如何利用CMake生成osg的FFMPEG插件,请参考如下博文,同生成jpeg插件类似:。如下为生成FFMPEG时必要的设置:注意:如下是本文设置的MSVC头文件目录:

2024-02-03 10:39:37 668

原创 从QObject类及非QObject类实现多继承,需把QObject放在继承链最前面

【代码】从QObject类及非QObject类实现多继承,需把QObject放在继承链最前面。

2024-01-19 16:34:25 553

转载 用C++QT实现一个modbus rtu通讯程序框架

具体的数据处理将根据需求进行扩展和实现,如写入数据和处理异常等。另外,需要根据实际情况设置正确的串口参数和设备地址,并确保与Modbus设备的正确连接。在编译和运行程序之前,还需要在项目的.pro文件中添加QT+=serialport以启用QtSerialPort模块。

2024-01-17 09:22:21 935 4

原创 qtcreator一次性加载多个项目

有时一个软件系统由一个主程序,很多so或dll工程构成,每次打开qtcreator一个一个pro工程往qtcreator加,当项目很多时,很费时间、很麻烦,虽然qtcreator提供了sessions,可以一次打开上次加载的所有工程,但sessions不能在不同机器、不同人之间共享,只能保存个人的。用过Visual Studio的童鞋,就知道VS有解决方案,一个解决方案文件可以挂接很多VS的工程,每次打开VS的解决方案,就一次性将所有VS的工程都打开了。如何一次性在qtcreator就能打开所有工程?

2024-01-10 19:38:16 693

原创 Linux下从sqlite3源码编译出sqlite3库及相关可执行程序

打开SQLite Download Page,滚动到页面的下面,找到源码量最大的那个(其它的估计也行,但源码最大的本人 感觉功能最全,截至2024年1月5号,源码最大的为13.42MiB),即单击下图红色连接下载源码:执行如下命令解压: 执行如下命令,创建构建目录:执行如下命令,编译: 如果报如下错误,则转到第2节进行操作: 2. 下载Tcl库并编译 打开Download Tcl/Tk Sources页面,点击如下红色框下载(本人下载的是zip格式的,你也可以选择其它格

2024-01-05 16:48:56 1419

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除