问题标签 [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.
direct3d - 无法从 dx12 中的 ID3D12Device 获取 IDXGIDevice 或 IDXGIDevice1
我想从我的 dx12app 调用 IDXGIDevice1::SetMaximumFrameLatency 方法,因为我需要从当前的 Direct3D 12 设备获取有效的 IDXGIDevice1。查询接口返回一个 E_NOINTERFACE:
不确定我是否遗漏了某些东西,或者我需要实现一系列 dxgi 逻辑以获得有效的 IDXGIDevice1 接口。
提前感谢任何提示和感谢!剪辑
c++ - 通过 HWND 获取 DXGI 交换链
有一个简单的应用程序可以作为 MS RDP 会话的管理器。您打开到不同计算机的 RDP 会话,然后您可以在通用监控面板中查看它们的预览。
OLE 控件用于组织 RDP 会话。
以前我只是通过 PrintWindow 复制 RDP 窗口,然后在预览中显示它。
在 Windows 10 中它不起作用。Microsoft Spy++ 显示如下图
在较旧的 Windows 上,“Output Painter 子窗口”主要是可见的,在这种情况下 PrintWindow 有效。
同样在 Windows 10 上,如果我删除 DXGI.dll,RDP 根本不起作用。所以我认为 PrintWindow 不起作用,因为 RDP 使用 DirectX 来绘制窗口内容。
我想过通过 DirectX 函数挂钩来获取图片,但它看起来很荒谬。这是一个很大的开销。我可以完全控制应用程序。我可以访问 RDP OPWindowClass HWND。我什至可以通过 ShowWindow 等来控制它们。
有什么方法可以获取连接到 HWND 的 DirectX 对象(如 IDXGISwapChain1 或 ID2D1HwndRenderTarget)?
windows - 桌面复制和 C++ AMP 不兼容?
我想在 GPU 上捕获和压缩屏幕。C++ AMP 和 DXGI 桌面复制各自单独工作,但似乎不能一起工作。
例子:
该项目运行良好,但在 DesktopDuplication.cpp 顶部附近添加最少的 C++ AMP 代码使其失败:
即使f()
从未被调用,也会m_Factory->CreateSwapChainForHwnd(...)
返回E_ACCESSDENIED
. (注释的版本f()
产生相同的结果。)
在我自己的项目中,当我尝试使用 C++ AMP 时IDXGIOutput1::DuplicateOutput()
返回。DXGI_ERROR_UNSUPPORTED
这是怎么回事?
更新:在 NVIDIA 控制面板中,将“首选图形处理器”更改为“集成图形”有效。(但是,最好使用 NVIDIA 卡。)
directx-11 - Direct2d CreateSharedBitmap 崩溃
我正在尝试创建一个共享位图以与 Direct2d 渲染共享 D3D11Texture2d。创建纹理和渲染目标后,我尝试制作共享位图,但是调用因 d2d1!GetParentTexture 中的内存访问错误而崩溃。我的代码如下:
任何想法为什么会失败?
directx - 了解 DXGI
MSDN 上的DXGI 概述说 Direct3D API(10、11 和 12)位于 DXGI 之上,而 DXGI 位于硬件之上,如下图所示:
文章进一步提到DXGI的任务基本上是枚举适配器并在屏幕上呈现图像。现在,如果 DirectX 位于 DXGI 之上,那么如何在实际硬件 (GPU) 上调用所有与数学相关的任务?还是架构概述错误并且 D3D_ 也直接访问硬件?
c++ - 翻转模型交换链不承认菜单栏
我正在尝试将我的程序从使用 bitblt 模型交换链(使用 DXGI_SWAP_EFFECT_DISCARD 创建的,大多数示例使用的默认值)更改为翻转模型交换链(DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL),因为它更快。
问题是,该应用程序有一个菜单栏,而 D3D 将坐标视为相对于窗口的客户区(就好像窗口没有菜单栏一样)。它不会在菜单栏顶部绘制,而是菜单栏会阻挡在其下方绘制的任何内容。DXGI_SWAP_EFFECT_DISCARD 交换链不会发生这种情况。
另一个奇怪的事情是,当我调整窗口大小时(在应用程序运行时手动),它有时会正确渲染,左上角坐标从菜单栏之后开始。
平台信息:Direct3D 11.1、Windows 8.1、Visual Studio 2013 (C++)
有什么想法有什么问题吗?
dxgi - 有没有办法从桌面复制中省略一个窗口?
我希望能够显示一个包含向用户显示但桌面复制未捕获的消息的窗口。那可能吗?
或者,有没有一种方法可以在向用户显示之前在桌面表面的顶部进行绘制?(理想情况下不会大量停止 GPU)
背景:我正在编写一个远程查看/支持应用程序,并希望允许远程用户在隐私中工作——在不干扰捕获的同时使用户的屏幕空白。
我想避免回到 WM_PRINT 和 BitBlt 的黑暗日子,但我不确定 DXGI 是否允许我想做的事情。
c++ - IDXGIFactory 版本
我正在使用 C++处理DXGI和DirectX 11 。目前我正在尝试使用 IDXGIFactory。经过一些研究和阅读文档后,我注意到有不同的版本。
IDXGIFactory IDXGIFactory1 IDXGIFactory2 IDXGIFactory3 IDXGIFactory4 IDXGIFactory5
但我也注意到,只有前 3 个 IDXGIFactory 版本可以创建这样的实例,而后 3 个则没有。
CreateDXGIFactory CreateDXGIFactory1 CreateDXGIFactory2
没有 CreateDXGIFactory3、CreateDXGIFactory4 或 CreateDXGIFactory5。
所以我的问题是如何创建一个 IDXGIFactory5 实例?
此外,我想知道我是否不能自己实例化 IDXGIFactory5 的实例,如何强制 D3D11CreateDevice 在内部创建和使用 IDXGIFactory5,以便从生成的 ID3D11Device 中检索引用?
编辑:
好的,现在我了解了不同的 CreateDXGIFactory 函数以及如何创建 IDXGIFactory5 实例。但是在理解了这一点之后,我遇到了下一个问题。IDXGIAdapter2的文档说我应该使用 IDXGIFactory1::EnumAdapters1 来查询实例。但是查看函数签名我只得到一个 IDXGIAdapter1。
如何枚举 IDXGIAdapter2 实例?
directx - 如何使用 DirectXTex 将 dx10 dds 图像转换为 png
我一直在使用 DirectXTex 工具,想知道是否可以使用texconv.exe
向后转换DDS -> TGA
(或其他支持的格式)而不是TGA, BMP, PNG -> DDS
. 将 PNG 图像转换为 DDS 可以这样完成:
我正在寻找这样的东西:
或者有什么可以做到的吗?
directx - 如何将 DXGI 共享资源的句柄传递给另一个进程?
https://msdn.microsoft.com/en-us/library/windows/desktop/bb174562(v=vs.85).aspx
根据 IDXGIResource::GetSharedHandle 的文档,我应该能够“将此句柄编组到另一个进程以与另一个进程中的设备共享资源”。
但目前尚不清楚如何通过此句柄。我可以将这个句柄的值传递给另一个进程吗?还是我需要一些特定的方法?
谢谢!