首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
TiXL 的 ScreenCapture 运算符:基于 DXGI 的实时屏幕捕获与录屏实战指南
📅 2026/9/20 13:10:10
✍️ 爱科研究院
👁 阅读 3,247
音视频图形学桌面应用【免费下载链接】t3TiXL is an open source software to create realtime motion graphics.项目地址https://gitcode.com/GitHub_Trending/t3/t3点击查看免费下载ScreenCapture 是 TiXL 图形化编程框架中位于Lib.io.video命名空间的屏幕捕获运算符它能够像 OBSOpen Broadcaster Software一样加载并渲染整个屏幕的内容输出为可直接接入渲染管线的Texture2D。在实时动效创作中它常用于录制 TiXL 自身 UI、配合 ScreenCloseUp 模拟“真实摄像机拍摄显示器”的视觉错觉以及为捕获画面叠加 Pixelate、SortPixel 等 2D 特效。读完本文你将掌握 ScreenCapture 的参数含义、底层 DXGI 实现原理及其在项目中的典型组合用法。功能概述一个可以接入渲染图的“屏幕源”ScreenCapture 在 TiXL 运算符体系中扮演着“输入源Source”的角色它不产生几何体也不做图像处理而是把操作系统层面的整块屏幕内容转成一个可继续向下游传递的纹理。官方描述将其定位为“类似 OBS 的屏幕捕捉软件”因此它天然适合需要把桌面画面当作素材来驱动动效的场景。从运算符库的归属来看它收录于 Lib.io.video 命名空间与 NdiInput、SpoutInput、VideoDeviceInput 等视频/图像输入类运算符并列共同构成 TiXL 的“外部画面接入”能力家族。输入参数详解ScreenCapture 只暴露两个输入参数接口非常精简官方文档定义如下名称类型说明ScreenIndexInt32指定录制哪一块屏幕例如多显示器系统TimeOutInt32定义超时时间从运算符定义文件 ScreenCapture.t3 可以看到两个输入在图形化界面中均已提供默认值ScreenIndex 默认值为 0即默认捕获主显示器。在多显示器环境下可以通过切换该值选择其他输出。TimeOut 默认值为 0对应底层桌面复制 API 的等待超时毫秒级。值为 0 时表示尝试立即抓取一帧不阻塞等待新帧。参数含义可以在仓库内的 ScreenCapture 源码中得到印证——Update方法中分别通过ScreenIndex.GetValue(context)与TimeOut.GetValue(context)读取这两个输入并直接将其传递给底层的屏幕复制调用详见下文实现原理一节。输出名称类型TextureOutputT3.Core.DataTypes.Texture2DScreenCapture 只有一个输出TextureOutput类型为标准 2D 纹理。该输出声明了DirtyFlagTrigger DirtyFlagTrigger.Always见源码第 10 行意味着它每帧都会被强制更新从而保证桌面画面能以实时帧率持续流入渲染管线——这正是“实时动效”场景所必需的行为。下游任何接受Texture2D的运算符如 2D 特效、混合节点、输出节点都可以直接消费这个输出。源码级实现原理DXGI Desktop Duplication APIScreenCapture 的底层实现并不依赖 GDI 位图抓屏而是使用 DirectX 的桌面复制Desktop Duplication机制这是 Windows 上高效获取屏幕帧的标准方案。完整实现位于 ScreenCapture.cs核心调用链可以概括为DXGI Device ──QueryInterface── DXGI.Device ──GetParent── DXGI.Adapter ──GetOutput(ScreenIndex)── Output ──QueryInterface── Output1 ──DuplicateOutput(device)── OutputDuplication ──TryAcquireNextFrame(TimeOut)── 获取桌面纹理 ──CopyResource── 拷贝到自建 ShaderResource 纹理 ──ReleaseFrame── 释放帧几个值得关注的实现细节屏幕索引的取模处理源码通过Utilities.InfiniteModIndexer(screenIndex, dxgiAdapter.GetOutputCount())对屏幕索引做取模运算因此即使传入超出显示器数量的索引或负值也会被安全地映射到有效输出上不会越界崩溃。屏幕切换时的资源重建Update方法中缓存了_currentScreenIndex当 ScreenIndex 输入发生变化时会先释放旧的OutputDuplication对象再重建避免跨显示器残留。纹理尺寸/格式自适应当捕获到的桌面纹理分辨率或像素格式发生变化时例如用户切换分辨率代码会比较新旧纹理的Width、Height、Format不一致时自动重新创建目标纹理源码第 50-56 行保证输出始终与当前桌面状态匹配。资源生命周期管理捕获到的桌面资源在using块内完成查询、拷贝最后通过Utilities.Dispose释放并在运算符Dispose时统一回收_currentScreen与_dup避免 GPU 资源泄漏。典型应用场景与运算符组合官方文档明确给出了三类高频用法均以 ScreenCapture 的TextureOutput作为链路起点1. 录制 TiXL 自身的 UIRender To FileScreenCapture 的输出可以被送入 TiXL 的Render To File窗口将 TiXL 的界面渲染为文件或图像序列从而得到一段 TiXL 操作过程的录屏。这在制作教学演示、演出彩排存档等场景中非常实用。Render To File 相关实现位于 Editor/Gui/Windows/RenderExport/RenderWindow.cs同目录下还有 RenderProcess.cs 与 FfmpegVideoExportWriter.cs负责视频编码与导出可作为后续深入了解导出管线的入口。2. 模拟“真实摄像机拍摄显示器”ScreenCloseUp将 ScreenCapture 的画面喂给 ScreenCloseUp 运算符它会把 2D 图像贴到 3D 场景中的虚拟 LCD/屏幕上并通过虚拟相机参数Zoom、Tilt、DepthOfField、Glossy、FogStrength 等营造出“用真实摄像机拍摄显示器”的临场感。官方还建议进一步叠加 ChromaticAbberation、ColorGrade、Grain 等运算符来强化真实相机的质感。ScreenCloseUp 的实现位于 Operators/Lib/Symbols/image/fx/stylize/其.t3ui文件明确注明“Works great with … ScreenCapture”。3. 为捕获画面叠加 2D 特效ScreenCapture 的输出是标准Texture2D因此可以直接串联任意 2D 图像处理运算符例如Pixelate马赛克实现于 Operators/Lib/Symbols/image/fx/stylize/Pixelate.cs可对桌面画面做像素化处理常用于隐私遮挡或风格化表达。SortPixel像素排序故障效果对应运算符 Operators/Lib/Symbols/image/fx/glitch/SortPixelGlitch.cs可以为捕获画面注入赛博故障风。以 ScreenCapture 为源头配合 TiXL 节点图的数据流连接方式用户可以自由构建“桌面画面 → 特效 → 输出”的任意处理链路。小结ScreenCapture 是 TiXL 接入桌面画面的最直接入口参数仅有 ScreenIndex 与 TimeOut 两个整数输入输出为每帧强制更新的Texture2D底层基于 DXGI Desktop Duplication 实现具备屏幕切换自动重建、分辨率自适应、索引取模保护等健壮性设计。无论是用于录屏、模拟摄像机拍摄还是作为 2D 特效的素材源它都能以极低的接入成本融入 TiXL 的实时渲染流程。若想继续深入可阅读 ScreenCapture.cs 的完整实现或参考 Lib.io.video 运算符清单 中其他视频输入类运算符进行横向对比。赞分享音视频图形学桌面应用【免费下载链接】t3TiXL is an open source software to create realtime motion graphics.项目地址https://gitcode.com/GitHub_Trending/t3/t3点击查看免费下载相关推荐Electron屏幕捕获实现屏幕截图与录屏功能Electron屏幕捕获实现屏幕截图与录屏功能 在桌面应用开发中屏幕捕获是一个常见且重要的功能需求。无论是用于远程协助、教学演示、游戏录制还是应用监控屏幕桌面应用跨平台前端ScreenCapture专业级屏幕捕获与标注工具完全指南ScreenCapture专业级屏幕捕获与标注工具完全指南 项目概述与技术架构 ScreenCapture是一款基于现代C和Qt框架开发的高性能屏幕捕获工桌面应用Ice屏幕捕获ScreenCapture权限处理深度解析Ice屏幕捕获ScreenCapture权限处理深度解析 引言macOS权限管理的核心挑战 在macOS生态系统中屏幕捕获权限Screen Record桌面应用上一篇从0到1开发FIDO2应用基于libfido2的认证流程设计与最佳实践下一篇New-Bing-Anywhere 未来路线图ChatGPT 集成与多级缓存策略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/9/20 13:05:09
LeakCanary Shark Explorer 支配树渲染原理:三种布局、自适应深度与命中测试全解析
2026/9/20 13:05:09
OpenResearch:面向本地优先研究工作流的协议规范
2026/9/20 13:05:09
Spring Boot + Spring AI + DeepSeek实战:Java生态快速集成大模型
2026/9/20 17:16:06
BrewUI 使用指南:给 Homebrew 配上图形化界面,包管理更直观
2026/9/20 17:16:06
对话式AI生成3D原型:硬件设计从想法到实物的快速验证
2026/9/20 17:16:06
Vue3 + Element Plus + Vite 从零搭建管理后台原型完整指南
2026/9/20 17:16:06
Unity微信小游戏开发实战:打包配置、视频播放与广告接入全解析
2026/9/20 17:16:06
生产物流系统建模与仿真:从FlexSim课程设计到产线优化实战
2026/9/20 17:11:05
Agent评测实战:从基准到流水线的完整指南
2026/9/20 0:03:47
深入解析Transformer多头注意力机制与工程优化
2026/9/20 0:03:47
OpenClaw 的 Skills 跑学习任务,模型通道改到 TaoToken 通道行不行?
2026/9/20 0:03:47
ChatGPT报错Oops, an error occurred! 全链路排查指南
2026/9/20 0:03:47
深入解析Transformer多头注意力机制与工程优化
2026/9/20 0:03:47
OpenClaw 的 Skills 跑学习任务,模型通道改到 TaoToken 通道行不行?
2026/9/20 0:03:47
ChatGPT报错Oops, an error occurred! 全链路排查指南