自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 一个Layered Window从支持多屏到高DPI开始,遭遇的性能雪崩及其优化历程

背景一个Layered Window,核心是DX实现渲染,通过UpdateLayeredWindowIndirect更新到窗口DC上,窗口表现形式大概是屏幕右侧有一个占屏幕1/3面积的可交互区域,该区域可被用户拖动和缩放,FPS要求是30+起因有一天有用户反馈多屏下有问题,东西拖不过去,我看了下,确实,很快就猜到了原因,一开始我们就没打算支持多屏(因为工期关系),所以在创建窗口时...

2019-03-26 20:46:12 891

原创 Direct3D绘制透明纹理有黑边,alpha预乘来解决

    这是前一段时间遇到的问题了,最近想起来应该写一写。alpha预乘,关键词是Alpha Premultiplied,这个事情我之前陆续了解过不少,只是没想到在D3D里面实际遇到了一次。文末有相关的一些资料可以参考。    如果你有贴图是带alpha通道的,那么他们互相blend的时候很有可能出现这样的情况,详细成因展开就太多了,可以参考末尾的资料等。这个是典型的没做alpha预乘导致...

2019-01-09 15:37:23 1713

原创 CEF在离屏渲染模式下没有tooltips?tooltips创建之后不显示?我以为我又遇到BUG了

    这次我们在CEF显示的界面里加上了tooltips,也就是html的title属性,结果发现这玩意竟然不会显示,一开始我怀疑是自己的代码问题,很快我又去cefclient这个demo里测试了一下,确认了我的怀疑,只要打开了--off-screen-rendering-enabled,就会导致tooltips无法显示。我当然认为这是一个CEF的bug,于是去反馈issue,但是我同时也做了一...

2019-01-09 15:31:27 1166 1

原创 补充一下之前关于win7后进程PCA的问题导致job创建出错的现象

windows7下(从vista开始),CreateJobObject之后,SetInformationJobObject设置JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE标志,在vs下调试,job的行为是正常的,但是直接启动,行为就不正常了,子进程不会在job被关闭后自动退出,拿ProcExp.exe看,发现vs下启动,job的属性是正确的如果直接运行,job的属性...

2018-12-04 19:38:14 355

原创 js里的localeCompare对中文进行排序没有C++直接来得靠谱

今天坑人的主角是Electron(2.x),里面string.localeCompare,效果和chrome不一样"啊".localeCompare("参"),chrome里返回值是-1,是按拼音排序的。Electron里返回1,估计是按部首排序?这里已经猜到可能和字符编码有关,如果在Electron下面 "啊".localeCompare("参", "zh-CN"),那得到的结果也是-1,即...

2018-11-27 23:12:46 591

原创 研究关于如何在Electron里从内存读取ico文件并显示的麻烦问题

    最近在做一个文件夹相关应用,能够显示文件夹中的所有文件和文件夹,并能正确显示缩略图,首先关于如何获取正确的Windows文件/文件夹/系统图标缩略图本身是一个复杂的工作,Electron提供的app.getFileIcon完全没法用,拿到的是32*32小图标,而且无法拿到文件夹图标,因此此处我们开发了一个dll的native module给Electron app调用,此处步骤省略。 ...

2018-11-24 15:21:35 1680 1

原创 关于vscode调试electron2.0.13 64bit出现Cannot connect to runtime process, timeout after 10000ms的问题

    一开始是因为要在electron下用ffi,其依赖nan,这俩东西不支持electron3.x下的Node10,解决方法是降级到electron2.x一切都很好没问题,然后处于项目原因我要改用64位版,之后发现vscode(当时的最新版1.29.1)没法调试了,错误是如下这样Cannot connect to runtime process, timeout after 10000...

2018-11-21 02:03:53 6515 1

原创 node-ffi在Electron下编译使用的问题

    项目需要在nodejs里加载dll,得知最简单的方案是使用node-ffi,然后就开始了半天的新手踩坑之旅。    npm搭建好项目之后,npm install ffi,会遇到这样的问题error: no member named 'ForceSet' in 'v8::Object'    去官网查,作者表示 ffi目前不支持nodejs 10及以上版本,然后我研究了一圈,踩...

2018-11-17 19:26:23 1771

原创 旧坑新摔,C++和json互传路径中斜杠转义的问题

最近做CEF,C++和web通信使用json来承载数据,有一个把路径传给js的需求,json写'[{"path":"C:\user"}]'然后js里JSON.parse完了,那个斜杠没了,变成[{path:"C:user"}]查资料知道json里特殊字符也需要转义,于是C++里传'[{"path":"C:\\user"}]'结果js里解析失败??我去chrome下测试也是一...

2018-10-11 20:20:14 3337

原创 再记一个CEF和pac代理的BUG……也许是我这辈子遇到过的最奇葩的BUG之一了

是否必现:必现触发路经:进程里开一个cef窗口,windowless,transparent-painting,其启动了两个Render进程,之后在QQ聊天框里打字(版本QQ9.0.4(23780)),必须是对单人聊天,讨论组和群都不行,之后你用cef的主进程必现crash,堆栈如下解决方法:ClientAppBrowser::OnBeforeChildProcessLaunch里...

2018-09-18 22:12:31 876

原创 研究了几天CEF的感受

cef搞到现在,用已经勉强用上了,性能也很好,但是最大的问题是js在render进程里跑,这一点和Electron是一样的,也是chrome这类浏览器标准做法,其实是不太适合纯pc客户端应用的,因为会很麻烦!js和主进程交互还是得依靠cef提供的IPC机制,对于那种只是交互+偶尔调用私有功能的app来说没啥问题,要经常调用系统和自己的api的还是算了,比如XXX实时系统之类的。我预感要是以后w...

2018-09-14 16:23:27 8056 4

原创 CEF与Off-Screen Rendering与Transparent Background

    cef研究了一天,发现这个要用起来比想象中的复杂很多,特别你得吃透官方demo里的cefclient,大而全,要拆出来作为自己的界面前端库来用需要一番功夫,然而cefsimple又太simple,试了下对cefsimple动手改成Off-Screen Rendering,会在CefBrowserHost::CreateBrowser{ //... int _retv...

2018-09-08 18:51:32 3885 5

原创 关于duilib在Layered Window下绘制文字不正常的BUG

    最近在做一个小玩具,C++上面实在是没什么好用的或者轻量级的开源DUI库了,duilib算是比较出名的一个,不过这玩意好几年没人维护,之前据说pc微信也用过这个开发,所以有意试试。用了一段时间感觉,这玩意的代码结构确实够旧的,而且使用中也存在不合理的地方,比如所有的窗口都需要一个CPaintManagerUI来管理,这就很奇怪,用过Qt,用过游戏引擎里的UI库,也用过腾讯内部的GF和项目组...

2018-09-08 18:37:02 971

原创 今天决定找一个博客来记录一下平时遇到的坑

RT

2018-09-08 18:23:53 142

空空如也

空空如也

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

TA关注的人

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