- 博客(395)
- 资源 (32)
- 收藏
- 关注
原创 Windows桌面采集技术
在进入具体的方式讨论前,我们先看看 Windows 桌面图形界面的简化架构,如下图:在 Windows Vista 之前,Windows 界面的复合画面经由 Graphics Device Interface(以下简称 GDI)技术直接渲染到桌面上。在 Windows Vista 以及之后的版本,Desktop Composition 的工作就交由一个新的模块Desktop Window Manager(以下简称 DWM) 来完成了。
2025-03-24 11:25:17
986
原创 electron多进程通信
进程间通信 (IPC) 是在 Electron 中构建功能丰富的桌面应用程序的关键部分之一。由于主进程和渲染器进程在 Electron 的进程模型具有不同的职责,因此 IPC 是执行许多常见任务的唯一方法,例如从 UI 调用原生 API 或从原生菜单触发 Web 内容的更改。
2025-02-26 20:25:30
896
原创 Qt:向Qt提交Bug反馈和贡献代码
向 Qt 提交反馈 Bug1 登陆:Qt Account Login注册一个账号:注册成功后:登陆:System Dashboard - Qt Bug Tracker先在下面链接处的 Bug 库里面查询一下, 你想要提交的 bug (or Suggesstion)是否已经被人提了,若是重复,则不必再提;新建问题:如:[QTBUG-98643] When the program exits, the application notification in ...
2025-02-10 10:04:55
179
原创 qml-ApplicationWindow
ApplicationWindow继承Window,类似于QMainwindowApplicationWindow 是一个窗口,可以方便地向窗口添加菜单栏、页眉和页脚项。您可以将ApplicationWindow 声明为应用程序的根项,并使用QQmlApplicationEngine 运行它。 通过这种方式,您可以从 QML 控制窗口的属性、外观和布局。...
2025-02-10 10:03:42
138
原创 qml-ListView
ListView 显示来自内置 QML 类型(如 ListModel 和 XmlListModel)创建的模型的数据,或在 C++ 中定义的从 QAbstractItemModel 或 QAbstractListModel 继承的自定义模型类。ListView 有一个模型,它定义了要显示的数据,还有一个委托,它定义了数据应该如何显示。 ListView 中的项目水平或垂直布局。 列表视图本质上是可滑动的,因为 ListView 继承自 Flickable。 ...
2025-02-10 10:03:21
852
原创 qml-Timer
计时器可用于触发一次动作,或以给定的时间间隔重复触发动作。这是一个显示当前日期和时间的计时器,每 500 毫秒更新一次文本。 它使用 JavaScript Date 对象来访问当前时间。import QtQuick 2.12import QtQuick.Window 2.12import QtQuick.Controls 2.0import QtQuick.Layouts 1.12import QtQml 2.12Window { id:root ...
2025-02-10 10:02:39
234
原创 qml-自定义组件
新建DateTimeLabel.qml填写内容:import QtQml 2.12import QtQuick.Controls 2.0import QtQuick 2.12import QtQuick.Window 2.12import QtQuick.Layouts 1.12Item { Timer { interval: 500; running: true; repeat: true onTriggered: time.text
2025-02-10 10:02:00
567
原创 qml-Repeator
import QtQuick 2.12import QtQuick.Window 2.12import QtQuick.Layouts 1.12import QtQml 2.12import QtQuick.Controls 2.5Window { id:root width: 400 height: 300 visible: true title: qsTr("Hello World") Row{ objectName:"ro.
2025-02-10 10:01:24
69
原创 chromium-mojo
explicit MathImpl(mojo::PendingReceiver<math::mojom::Math> receiver)的使用。Invition 机制。
2025-02-10 09:58:47
466
原创 chrome-mojo C++ Bindings API
为了教导生成的绑定代码如何将任意本机类型序列T化为任意 Mojom 类型mojom::U,我们需要定义模板的适当特化。有效特化必须定义以下静态方法:Mojom 结构的每个字段的单个静态访问器,与结构字段具有完全相同的名称。这些访问器都必须采用(最好是 const)引用到本机类型的对象,并且必须返回与 Mojom 结构字段的类型兼容的值。这用于在消息序列化期间安全且一致地从本机类型中提取数据,而不会产生额外的复制成本。一个单一的静态Read。
2025-02-10 09:51:35
1131
原创 chrome-mojo idl
Mojom 是 Mojo 接口的 IDL。给定一个.mojom文件,绑定生成器C++JavaScript或Java。举一个简单的例子,考虑我们写入的以下假设的 Mojom 文件这定义了一个名称为Frobinator的interface,它在widget.mojom模块,因此它的全称是如果我们将相应的 GN 目标添加到etc...这些生成的源模块中的每一个都包含一组用 C++ 表示 Mojom 内容的定义。您还可以构建或依赖带后缀的目标名称来获取其他语言的绑定。例如,
2025-02-10 09:51:00
1124
1
原创 chrome-mojo 概述
Broker提供介绍机制(Introduce)帮助一对node建立IPC链接broker是个特殊的node channel,规定只有它能introduce(通过调用的能力找到两个node)并发送Introduce message,这就要求broker需要跟每个node都有链接node与node之间一开始只有IPC点对点通信,假如要发给另一个node,但是和当前node之间没有直接的IPC,则需要通过broker建立一个新的IPC通道,消息就是这个过程.
2025-02-07 16:40:30
955
原创 chrome-base 如何实现一个BindOnce
BindOnce 是如何实现的呢?翻看源码:base\functional\bind.h写的 非常简洁重要的也就是最后一句:构造一个BindImpl,同时完美转发BindState的实现其中用到了std::tuple??
2025-02-07 16:39:54
938
原创 windbg使用
用户环境中,调试器只会对当前线程进行分析,所以一定要将线程环境切换到最可能引起问题的那个线程中去,才有帮助。这个参数非常有用,当真的遇到死锁时,它可以救命(另一个分析死锁的有效命令是!注解: 带有尽量多选项的minidump(包括完整的内存内容、句柄、未加载的模块,等等),文件很大,但如果条件允许(本机调试,局域网环境), 推荐使用这中dump。此命令分析当前最近的异常事件(如果在进行dump分析,则是bug check),并显示分析结果。-v:显示异常的详细信息,这个选项在调试错误的时候,最有用。
2025-02-07 16:39:28
1480
原创 base库学习
这个方法基于的规则:当RunLoop::Run进入delegate_->Run后,执行的是MessagePump::Run,只要退出了MessagePump::Run就意味着退出RunLoop::Run。// 已拥有一个base::Thread的指针。SequencedTaskRunnerHandle::Get()执行的是访问局部存储,把sequenced_task_runner_tls中成员task_runner_(不是sequenced_task_runner_tls)值返回给app。
2025-02-07 16:38:44
738
原创 std::memory_order
std::memory_order - cppreference.com 操作系统是如何实现锁的:操作系统中锁的实现(阿里巴巴面试被虐题:cpu是怎么实现锁的)_加锁时cpu做了哪些动作_子循的博客-优快云博客聊聊内存模型和内存序_memory_order_acquire_高性能架构探索的博客-优快云博客
2025-02-07 16:37:10
264
原创 obs 视频采集到预览流程
等到信号后执行video_output_cur_frame函数,获取视频缓存中第一帧,从video->inputs中获取输出类型调用编码器绑定的回调函数input->callback,receive_video(),进行视频数据编码,而video->update_semaphore 信号量是在所有画面合成完成后被唤醒;两个线程的操作的视频帧缓存队列定义在 obs_core -> obs_core_video -> video_output -> cache。
2025-02-07 16:36:40
999
原创 electrion学习
这也是为什么 electron. 能够知道应该使用哪个文件来启动。在Chromium中, 这个进程被称为 "浏览器进程"。它在Electron被重新命名, 以避免与渲染器进程混淆。
2025-02-07 16:35:48
638
原创 windows高级调试
无论用户模拟异常还是CPU异常,经过前面分析,在经过记录之后,最终都会经过KiDispatchException这个派发函数中。在KiDispatchException中会对CPU异常和用户异常分别进行处理。
2025-02-07 16:35:05
1002
原创 electron中调用C++
因此,node-addon-api 提供了允许调用者获取底层 Node-API 句柄的方法,因此直接调用 Node-API 和使用 node-addon-api 提供的对象/方法可以一起使用。模块不是 Node.js 的一部分,保留了 Node-API 的优点,因为它仅包含内联代码,而这些代码仅依赖于 Node-API 提供的稳定 API。因此,使用 node-addon-api 针对某一版本的 Node.js 构建的模块应该可以运行,而无需使用较新版本的 Node.js 重新构建。(通过 包含在项目中。
2025-02-07 16:33:50
1014
1
原创 泛型编程123
但是你会问,模板的发明,仅仅是为了做和宏几乎一样的替换工作吗?而模板会在分析模板时以及实例化模板时时候都会进行检查,而且源代码中也能与调试符号一一对应,所以无论是编译时还是运行时,排错都相对简单。用更好理解的说法,元编程意味着你撰写一段程序A,程序A会运行后生成另外一个程序B,程序B才是真正实现功能的程序。那么这个时候程序A可以称作程序B的元程序,撰写程序A的过程,就称之为“元编程”。如果元编程中所有的变化的量(或者说元编程的参数),都是类型,那么这样的编程,我们有个特定的称呼,叫“泛型”。
2025-02-07 16:31:26
283
原创 c++ template-3
最好使用不同长度的字符串常量对模板进行测试。 模板参数的类型在按值传递时会退化,按引用传递则不会。 可以使用 std::decay<>对按引用传递的模板参数的类型进行退化。 在某些情况下,对被声明成按值传递的函数模板,可以使用 std::cref()和std::ref()将参数按引用进行传递。 按值传递模板参数的优点是简单,但是可能不会带来最好的性能。 除非有更好的理由,否则就将模板参数按值传递。
2025-02-07 16:30:41
906
原创 window环节搭建ts环节
vscode安装 node安装Node.js:首先,确保您已经安装了Node.js。您可以从Node.js官方网站(https://nodejs.org)下载并安装适合您操作系统的版本。
2025-02-07 16:28:13
357
原创 OBS::Display
这段代码使用 GetWindowLongPtr 函数和 GWL_STYLE 和 GWL_EXSTYLE 常量来检索当前窗口的样式和扩展样式。最后,通过按位或操作 windowStyle 变量,修改扩展样式,该变量可能包含其他窗口样式。然后,它通过按位与操作将其与 WS_POPUP 样式的补集进行,从窗口中移除弹出式样式。接下来,它将样式与 WS_CHILD 样式进行按位或操作,将窗口设置为子窗口。整体来看,这段代码改变了窗口样式和扩展样式,创建了一个具有附加样式的子窗口。
2025-02-07 16:24:02
198
原创 games101-(7/8/9) shading
引入明暗的不同,在这门课:对不同的物体应用不同的颜色将顶点所关联的周围的多面形面的法线求一个平均(无论是简单平均还是加权平均(根据顶点周围的多边形面的各自面积比例的加权)),作为顶点的法线。需要用到重心坐标,todo在现代GPU中,纹理 = 内存+范围查询将数据带入片元计算的通用方法,适用于多种应用环境光照存储微几何。。。。。。
2025-02-01 19:30:52
815
原创 DirectX11 With Windows SDK--02 顶点/像素着色器的创建、顶点缓冲区
左手坐标系:三角形的的z朝着 z的负方向,如果调换1 3 则方向变成了逆时针, 因此三角形作为背面剔除掉。
2025-02-01 19:30:29
452
原创 games101-作业3
由于此次试验需要加载模型,涉及到本地环节,如果是windows系统,需要对main函数中的路径稍作改变:这么写需要:同时在windows下计算很卡,可能软件模拟计算量很大的原因;使用c++17及以上版本,\spot_triangulated_good.obj 中的描述了顶点信息输入到三角形列表中:但是 在使用的时候:fragment_shader 即下面的着色模型:中去如何消费这个图片用于设置着色模型。
2025-01-30 20:52:15
372
原创 games101-(5/6)
投影完成之后,视图区域被确定在从[-1,1]的单位矩阵中,下一步就是光栅化长宽比:ratio垂直的可视角度:fild-of-view 可以看到的y 轴的范围,角度越小 越接近正交投影屏幕坐标系将多边形转化成像素显示器的成像:隔行扫描(每次仅仅绘制奇数行或偶数行)
2025-01-28 18:36:09
416
原创 games101-作业
zNear是近平面到摄像机的距离,已知视角,可以根据正切函数求出一半的高度,最后乘2就可以得到近平面的高度,根据宽高比,求出近平面的宽度。再根据推导出的矩阵,代入数据即可求得所需的结果。绕x,y,z轴的变换矩阵如下,算出两个三角函数值后直接代入即可。然后就是设置模型、观察以及透视矩阵,最后绘制。简要分析一下整体的一个绘制流程。
2025-01-28 13:22:38
389
原创 game101 环节搭建 windows 平台 vs2022
GAMES101作业0环境搭建(windows+visual studio)_games101作业环境配置-优快云博客课件:GAMES101: 现代计算机图形学入门计算机图形学-GAMES101作业-在Visual Studio中搭建Eigen和OpenCV的环境_哔哩哔哩_bilibili
2025-01-27 18:36:55
208
原创 obs directx11
obs 在windows 下分为Opengl 和 directx 两种渲染模式,默认使用的是directx ,兼容性更好;代码路径:E:\opensrc\obs_studio_src\obs-studio\UI\obs-app.cpp 选择渲染模式在ResetVideo中通过obs_video_info ovi 参数graphics_module 传递到底层。
2025-01-06 21:16:35
388
DirectX11 With Windows SDK-02 顶点/像素着色器的创建、顶点缓冲区
2025-02-01
study.zip 练习用
2020-08-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人