问题标签 [dxgi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
138 浏览

c++ - 使用 RegisterOcclusionStatusEvent 注册的事件是否应该在 DXGI 工厂销毁之前取消注册?

我正在注册通过调用创建的遮挡事件IDXGIFactory2::RegisterOcclusionStatusEvent。这个方法给了我一个 cookie,我以后可以传递给IDXGIFactory2::UnregisterOcclusionStatus. 我假设我仍然持有此事件句柄的所有权,并在销毁 DXGI 工厂后将其关闭。但是在不注销事件的情况下忽略 cookie 并销毁工厂真的安全吗?

0 投票
1 回答
1533 浏览

directx - DXGI Waitable SwapChain 不等待

我设置了一个 DX12 应用程序,它只清除每帧的后备缓冲区。

它真的是准系统:没有 PSO,没有根......唯一的特殊性是它在开始新帧( msdn 可等待交换链)之前等待 swapChain 与 Present() 完成(我将帧延迟设置为 1 为好吧,只有 2 个缓冲区)。

第一帧运行良好,但它立即开始绘制第二帧,当然,命令分配器抱怨它正在被重置,而命令仍在 GPU 上执行。

我当然可以设置一个栅栏来等待 gpu 在移动到新帧之前完成,但我认为这是等待交换链对象的工作。

这是渲染例程:

我使用从交换链获得的可等待对象循环此例程:

我用等待标志初始化了交换链:

我在创建 swapChain 后立即调用 SetFrameLatency :

以及随之而来的 swapChain 调整大小:

我的问题是:我是否设置错误?还是这是可等待交换链的工作方式(即,在等待交换链可用之前,您还需要使用栅栏与 gpu 同步)?

编辑:添加 SetFrameLatency 调用 + C++ 着色

0 投票
1 回答
654 浏览

c++ - 如何减少 UWP 应用程序中的全屏交换链呈现延迟?

我有 DirectX11 UWP 应用程序。IDXGIFactory2::CreateSwapChainForCoreWindow我使用常用​​参数创建交换链。

当我尝试通过调用::IDXGISwapChain::SetFullscreenState它来将其更改为全屏模式时失败,DXGI_ERROR_NOT_CURRENTLY_AVAILABLE并且我得到以下诊断:

DXGI 错误:IDXGISwapChain::SetFullscreenState:核心窗口交换链无法转换为全屏,因为它们被认为是永久窗口化的。[杂项错误#163:]

DXGI 错误:IDXGISwapChain::SetFullscreenState:对于现代应用程序,全屏不可用。所有交换链都必须是窗口化的。[杂项错误#206:]

我发现我可以使用以下方法切换全屏模式ApplicationView

但是这种方法只隐藏任务栏,隐藏窗口框架和最大化窗口。我认为在这种情况下通过翻转模型演示应该可以获得通常全屏交换链的低延迟优势,但这似乎不是两个工作并且交换链继续组合。复合翻转仍用于演示,演示延迟与窗口模式下保持相同约 30 毫秒。我需要完全禁用合成还是有其他方法可以避免合成应用额外的延迟?

0 投票
1 回答
1154 浏览

c++ - 提取脏矩形 RGB 像素缓冲区数据 DirectX

我正在使用来自 Windows API 的桌面复制。这是访问下一帧并获取与前一帧相比发生变化的像素矩形的代码。

这是Frame_Data结构

是否可以访问已修改的像素缓冲区数据Data->Frame

这是我访问数据的代码:

谢谢您的帮助!

0 投票
0 回答
144 浏览

c++ - AcquireNextFrame customize dimension

I'm using AcquireNextFrame to make a screenshot of my desktop. Is it possible to set a dimension of the image I want. For example : default resolution of my computer is 1920x1080 and I would like to get the image in 1280x720. I call this function many times so if it's possible to set a dimension before it would be great.

Here is my code :

#xA;

Thank you for your help.

0 投票
1 回答
489 浏览

directx - SharpDX MapSubresource 垂直翻转 C#

如何在不将其转换为位图的情况下翻转 SharpDX.Databox?我正在使用 SharpDX 和 Media Foundation 进行屏幕录制。以下是有关如何获取 Databox 的代码。

mapSource = device.ImmediateContext.MapSubresource(screenTexture, 0,SharpDX.Direct3D11.MapMode.Read, SharpDX.Direct3D11.MapFlags.None);

但是当我通过 mediafoundation.net 中的 mapSource 时,我制作了一个垂直视频。

在此处输入图像描述

0 投票
1 回答
1532 浏览

c# - 捕获鼠标光标并在图像缓冲区 c# 上绘图

我正在开发一个屏幕录制应用程序,我可以捕获屏幕但没有鼠标光标。我使用了 DXGI、SharpDX 和 Media Foundation。

我的问题是。是否可以将鼠标光标写入图像缓冲区,以便我发送到 mediafoundation 的图像缓冲区在编码为视频之前已经有鼠标光标?在这里看到很多示例如何在屏幕截图中包含鼠标光标,但他们所做的是将两个图像都转换为位图,然后将两者结合起来。我已经试过了,但是性能不好,cpu使用率很高,fps也很低。没有光标,我可以流畅地捕捉 60fps。提前致谢

0 投票
0 回答
108 浏览

directx-11 - Media Foundation.Net SinkWriter 错误

我正在尝试使用 MediaFoundation 对直接 x 缓冲区进行编码。我的 Direct X 纹理格式是

我的 Sink Writer 中的媒体输入子类型是

当我运行程序时,系统会挂起几分钟,然后关闭。我试着改变

它可以工作,但不是硬件编码。我的应用程序的 CPU 使用率很高。我在网上搜索过,发现只有 NV12 和 ARGB32 可用于硬件编码。谁能帮助我如何让 ARGB32 媒体输入接受 B8G8R8A8_UNorm 纹理。谢谢。

0 投票
1 回答
1211 浏览

c++ - Custom output resolution DuplicateOutput DXGI

I'm using AcquireNextFrame to make a screenshot of my desktop. Is it possible to set a dimension of the output image I want on the setup ? I saw on the documentation this function IDXGIOutput::SetDisplaySurface that could help. Here is my code :

My screen is 1920x1080 and I would like to get image in 1280x720 for example. I'm getting an error on queryinterface function. Can someone tell me what I'm missing ? Or is there any solution to customize the resolution easier ? Thanks

0 投票
2 回答
2317 浏览

c# - MF SinkWriter 写入样本失败

我正在尝试使用 MediaFoundation 将 ID3D11Texture2D 编码为 mp4。以下是我当前的代码。

初始化接收器写入器

书写框架

使用 MFTRACE 我收到以下错误。

谁能告诉我我的代码有什么问题?我只能产生 0 字节的 mp4 文件。