
C++
不甘平凡的小鸟
程序员一个。
展开
-
使用SWIG编写python的扩展
C++编写python3的扩展原创 2022-08-01 15:40:19 · 850 阅读 · 0 评论 -
动作捕捉(Motion Capture)文件BVH的解读笔记
动作捕捉文件的一些解读原创 2022-07-21 12:27:43 · 2294 阅读 · 0 评论 -
CUDA流并行的思考
不少博客在介绍流任务并行时,都会说“为了高效利用多个流,将操作放入流的队列时应采用宽度优先方式而非深度优先”。其实不然。当H2D和D2H是同一个引擎执行时,确实流宽度优先能获得更高的效率。但是,当H2D和D2H是不同引擎执行时,流深度优先反而是效率更高的。假设H2D和D2H的执行时间都是Tc,kenel执行的时间是2*Tc,当H2D和D2H是不同引擎执行时,深度优先的总执行时间是7Tc,宽度优先的执行时间是8Tc。...原创 2022-03-09 11:24:14 · 788 阅读 · 0 评论 -
C++子线程中调用python代码
项目需要C++调用python的算法,由于python算法比较耗时,因此采用在C++里启动working thread来调用python脚本,python代码里含有cv2.imread()等opencv的调用,在子线程里调用会卡死。解决办法://1,主线程初始化python时,需要使能多线程:Py_Initialize();PyEval_InitThreads(); //2,主线程中,创建子线程之前:Py_BEGIN_ALLOW_THREADS// 创建子线程并执行子线程Py_END原创 2021-12-03 12:48:42 · 3780 阅读 · 0 评论 -
CUDA线程调度
1,一个GPU会有多个SM(Streaming MultiProcessor),SM之间是并行的;2,一个SM可以同时处理多个Block的多个wrap,也就是说,同一时刻,一个SM内,不止只有一个wrap在执行;3,SM处理完一个Block后,才会处理下一个Block,也就是说例如SM可以同时处理3个Block,那么这3个Block的其中一个处理完后,才会处理第四个Block。4,一个wrap的线程会分配到32个(假设一个wrap的线程数量是32)CUDA core,也叫stream proce原创 2021-09-11 22:32:31 · 1558 阅读 · 0 评论 -
使用QTextDocument绘制富文本
void QtTest::paintEvent(QPaintEvent * event){ QPainter painter(this); painter.translate(0, 10); QString strHTML = ui.textEdit->toHtml(); // 从QTextEdit控件中提取富文本,绘制在界面上。 QTextDocument doc; doc.setHtml(strHTML); doc.setTextWidth(27.原创 2021-03-26 10:13:48 · 1567 阅读 · 0 评论 -
关于Qt中的Q_D,Q_Q
扒了下QComboBox的源码,里面使用了大量的Q_D,Q_Q宏,记录一下:#define Q_D(Class) Class##Private * const d = d_func()#define Q_Q(Class) Class * const q = q_func()看看d_func和q_func:template <typename T> static inline T *qGetPtrHelper(T *ptr) { return ptr; }template &l原创 2021-03-16 14:47:00 · 4032 阅读 · 0 评论 -
自定义QComboBox显示的文本
最近在做个控件,大概是要实现QComboBox下拉视图是树状的,选中叶子节点后,需要将该叶子节点到跟节点经过的节点文本串起来,例如:选中了subsubItem1后,comboBox需要显示 item1-subItem1-subsubItem1。下拉视图通过QTreeWidget *tree = new QTreeWidget;ui.comboBox->setModel(tree->model());ui.comboBox->setView(tree);实现。问题是原创 2021-03-16 14:21:27 · 2144 阅读 · 1 评论 -
在.cpp中编译thrust出现的错误解决
新建CUDA工程,新建thrustTest.cpp,键入如下代码:#include <thrust/device_ptr.h>#include <thrust/device_vector.h>#include <thrust/copy.h>#include <thrust/fill.h>#include <thrust/replace.h>#include <thrust/functional.h>#include.原创 2020-12-04 16:51:01 · 1460 阅读 · 0 评论 -
CUDA kernel的执行顺序
一般来说,cuda的kernel是顺序执行的,不管是在哪个流上执行kernel,kernel执行引擎会顺序执行kernel。不过对于支持并发kernel的gpu来说,kernel是可以并发执行的。参见CUDA的sample :6_Advanced\concurrentKernels...原创 2020-04-11 22:05:56 · 1924 阅读 · 0 评论 -
Qt 5.9使用qmake -tp vc xxx.pro转成vs工程文件遇到的问题
有时候想在VS中调试QT的工程,要么使用VS的QT tool直接打开pro文件,要么转成VS的项目文件,例如我使用的是Visual studio 2017 64bit,打开Qt的命令行Qt 5.9 64-bit for Desktop(MSVC 2017):打开命令行后,进入到.pro文件所在目录:然后再命令行里敲入:qmake -tp vc xxx.pro回车后出现:msvc...原创 2019-11-13 15:52:27 · 2268 阅读 · 2 评论 -
vs2017 加入GL/gl.h的错误
在VS工程中加入#include <GL/gl.h>后编译,得到如下一堆错误:解决办法:在#include <GL/gl.h>前,#include <windows.h>并且,需要链接上opengl32.lib...原创 2019-11-13 14:21:42 · 2111 阅读 · 0 评论 -
用Process Explorer分析进程各个线程CPU占用率
使用Process Explorer可以很方便查看某个进程各个线程的CPU占用率,可以为排查问题提供帮助。我使用的Process Explorer版本是v16.21 64bit。使用VS 2008创建一个MFC对话框程序,在代码中创建两个线程,如下: m_thread = (HANDLE)_beginthreadex(NULL,1024,m_thread_func,(void*)this,NULL...原创 2018-03-17 10:14:42 · 8333 阅读 · 1 评论 -
RTP报文头中的SSRC和CSRC
以下内容转载自http://www.360doc.com/content/11/1009/15/496343_154624612.shtml和https://www.cnblogs.com/yoyotl/p/5650101.html同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。·特约信源(CSRC)标识符:每个CS...转载 2018-04-03 16:01:43 · 30391 阅读 · 3 评论 -
Visual Studio 2008 设置UAC控制为requireAdministrator无效的问题
最近突然发现嵌入了cef 3.3325浏览器插件的MFC程序默认不是管理员权限打开的,检查了下工程配置:UAC执行级别已经配置成requireAdministrator,生成的exe图标上仍旧没有出现小盾牌。个人感觉是哪里的配置与此处的冲突了,想起了嵌入cef时在“生成后事件”里添加了命令行来嵌入清单文件:于是打开xxx.exe.manifest,果然这里设置了权限仍为asInvoker:把“as...原创 2018-06-01 09:16:52 · 4092 阅读 · 0 评论 -
VC++编程中的字符集问题
使用visual studio 进行windows编程时,不可避免会遇到字符集(character set)的问题,VS提供两种字符集,一种是多字节字符集,另一种是unicode字符集。1,多字节字符集,英文字符占1个字节,一个中文字占2个字节,使用_tcslen计算一个中文的字符长度为2;2,Unicode字符集,英文字符占2个字节,一个中文占2个字节,使用_tcslen计算一个中文的字符长度为...原创 2018-06-25 14:38:01 · 1344 阅读 · 1 评论 -
OCX控件在web页面不能加载的问题
1,问题描述:写了个OCX,在本地静态html文件里加载,双击用IE打开,能够正常加载OCX控件,调用其方法也正常,把测试的html文件放入apache目录,通过IE 敲入localhost访问也正常,但是部署到服务器上,通过客户端PC访问服务器IP的方式,却不能加载OCX,其方法也调用不了。2,问题解决,上网查了下,以及根据以往的对接经验,做如下设置:1)在IE里把web服务的IP加入受...原创 2018-06-19 14:09:16 · 27229 阅读 · 4 评论 -
QtQuick---场景渲染(Scene Graph)
转载自:QtQuick基础教程(四)---场景渲染(Scene Graph)在Qt5之前,GUI开发使用的是现在的QtWidgets,已经被大家所熟悉,ui描述界面布局组合C++细节实现,实现效果很好,界面开发的速度还算中肯。在不具备开发自定义UI又需跨平台(C++源码)的组织和个人面前,几乎是不二选择。但在移动开发面前不灵了,因为QtWidgets本质是使用平台绘图工具来绘绘制界面,而每个界...转载 2018-07-30 09:13:27 · 6239 阅读 · 2 评论 -
Qt WA_TranslucentBackground 导致视频渲染不了的问题
使用QT5.7 + VS2015做的试验,视频渲染使用D3D9。发现的规律是:顶层窗口(指父窗口为NULL的窗口)如果设置了 this->setWindowFlags( Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground,true);那么不管是用该顶层窗口本身的窗口句柄,还是...原创 2018-08-07 19:20:21 · 5784 阅读 · 5 评论 -
QWidgetAction实现鼠标滑过菜单项图标高亮显示
需求是鼠标滑过菜单项时,菜单项的文字、icon以及子菜单的小箭头都要高亮显示,qss中只能设置item背景色、文字颜色以及子菜单小箭头的样式,icon的图片不能切换,另外曾经想过用indicator(对action setCheckable(true)后,此子控件在qss中会生效)代替icon,因为indicator可以在qss中定制,但是这样一来所有的action的图标都是一致的了,这明显不符合...原创 2018-08-24 13:16:13 · 8806 阅读 · 3 评论 -
Qt关于mouseMoveEvent的捕捉以及setMouseTracking
一、对于单个Widget而言,要想在鼠标不按下的情况下捕捉mouseMoveEvent,则对该widget执行:setMouseTracking(true);二、对于父子窗口而言,父窗口若想捕捉到鼠标在子窗口上方的mouseMoveEvent,则父子窗口都需要执行:setMouseTracking(true);并且子窗口并未对该事件进行处理,即没有accept或ignore该事...原创 2018-08-24 17:19:55 · 8145 阅读 · 3 评论 -
QT 使用CDB调试,调试窗口消失问题
本来已经配置好了CBD的路径的:1)安装windbg ,我安装的是64位版本,然后在qt creator的 “工具”、“选项”里可以自动检测到cdb:当然也可以手动配置cdb.exe的路径。2)设置调试器:选择调试器,然后就可以在qt工程里调试了。后来遇到个问题,就是开始调试后,什么堆栈窗口啊、局部表达式窗口啊都不见了,直接就只有断点所在的代码:后来才发现,这些...原创 2018-09-05 09:56:37 · 4971 阅读 · 0 评论 -
winsparkle简单使用说明
需要一个web服务(支持HTTPS)来存放更新包以及对应的更新信息。(个人实验,配置Tomcat支持HTTPS,后来发现http也可以)winsparkle库的功能是,通过HTTPS检测更新(通过web端的.xml文件的内容,判断web上的版本与当前程序版本的新旧),下载更新包到临时文件夹,打开更新包。一 获取库从 https://github.com/vslavik/winspark...原创 2019-01-09 18:47:38 · 3896 阅读 · 0 评论 -
SOA AOS 面向对象与面向数据
转载自https://blog.youkuaiyun.com/debugconsole/article/details/17788979SOA 数组的结构与AOS结构的数组,是面向数据和面向对象设计的区别之一。在需要高频率(如渲染循环中)访问数据的时候,一般情况下SOA的效率高于AOS,因为将需要频繁访问的数据连续存放会大大提高访问速度。虽然AOS的结构可能更适合面向对象设计,但是在高度依赖效率的地...转载 2019-08-22 15:52:54 · 1376 阅读 · 0 评论 -
使用cef3.3282.1734版本嵌入到vc工程debug版无法显示页面问题解决
由于项目需要,近日在http://opensource.spotify.com/cefbuilds/index.html下载了cef3.3282.1734作为客户端的浏览器库,使用该库自带的demo(cefclient、cefsimple)测试均没什么问题,debug\release版本也可以正常加载显示页面,但是我把它集成到自己的mfc工程后却发现debug版的库无法加载页面,在任务管理器里查看...原创 2018-06-01 09:06:51 · 1361 阅读 · 0 评论