dxgi相关内容
我正在尝试编写一个应用程序,它将捕获屏幕的视频流并将其发送到远程客户端.我发现在 Windows 上捕获屏幕的最佳方法是使用 DXGI 桌面复制 API(自 Windows 8 起可用).Microsoft 提供了一个简洁的示例,可将重复的帧流式传输到屏幕.现在,我一直在想什么是对这些帧进行编码并通过网络发送的最简单但仍然相对较快的方法. 框架来自 AcquireNextFrame 带有一个
..
我正在开发 DirectX 11 应用程序,但在创建 IDXGIFactory7 实例时遇到困难.我找不到 CreateDXGIFactory7() 函数,所以我使用 CreateDXGIFactory2() 像这样: IDXGIFactory7* 工厂;HRESULT hr = ::CreateDXGIFactory2(DXGI_CREATE_FACTORY_DEBUG, __uuidof(I
..
我使用 ID2D1HwndRenderTarget 绘制了大部分UI,但是我想要一些经典的窗口控件: button , edit .如何 ID2D1HwndRenderTarget * canvas = nullptr;//它是全局对象HWND按钮= nullptr;//它是全局对象HWND编辑= nullptr;//它是全局对象HWND custom = nullptr;//它是全局对象
..
我在VC ++ 2010中创建控制台应用程序,并向其中添加以下代码: #include#include#include#pragma comment(lib,"d3d10.lib")#pragma comment(lib,"d3dx10.lib")#pragma comment(lib,"dxgi.lib")#pragma comme
..
有什么方法可以从使用“桌面复制"捕获的图像中裁剪出特定的RECT,并在应用某些效果后将其渲染回窗口. 请看一下这张照片: 以记事本为例,按照上面的图片,我想捕获红色的矩形区域(窗口RECT区域)并将其渲染回窗口.当窗口从一个位置移动到另一个位置时,捕获源RECT也应与窗口一起移动(与窗口放大镜窗口一样). 我已经提到 DXGI桌面复制示例看起来很复杂. 注意:我将使用WDA
..
Windows控制面板中有一个选项,可以将应用程序设置为“高性能".控制面板->系统->显示->图形设置. 在其中添加我的应用程序时,我注意到,在使用Media Foundation和H.265进行编码时,它使用NVIDIA gfx适配器进行编码.在此之前,它曾经使用只能进行H.264编码的嵌入式Intel图形,因此H.265编码是在CPU中缓慢完成的. 如何以编程方式将我的应用程序添
..
我一直在研究实现DXGI桌面复制API的其他人的代码,但遇到了一个奇怪的问题.这是我正在使用的代码的github链接. https://github.com/diederickh/screen_capture/blob/master/src/test/test_win_api_directx_research.cpp 所有代码都可以正常工作,直到我尝试查看D3D11_MAPPED_SU
..
因此,我试图创建一个仅显示其边框并使其余部分透明的窗口.我创建了一个脑海中的样机: WS_EX_NOREDIRECTIONBITMAP 1 扩展了窗口样式,以调用 CreateWindowEx .这样可以防止系统为窗口的工作区分配渲染表面,使工作区完全透明. 请注意,这不会使窗口对鼠标单击透明.命中测试仍然由窗口控制,即使它没有可见的客户区也是如此. 以下代码提供了一个最小的代码
..
在DirectX中缩小尺寸时,我注意到底部/右侧边缘闪烁。 如果您固定交换链的大小(以红色表示),并将win32背景设置为绿色,则在调整大小时将得到以下内容: 似乎窗口大小落后于鼠标位置(“拖动矩形”),但是DirectX填充的区域(红色和黑色)与拖动矩形,其余部分用窗口背景色(绿色)绘制。 DirectX实用工具包(DXUT)没有此问题。通过试验他们的设置,我发现设置 DXGI
..
https://msdn.microsoft.com/zh-CN/library/windows/desktop/bb174562(v=vs.85).aspx 根据IDXGIResource :: GetSharedHandle的文档,我应该能够“将该句柄编组到另一个进程,以便与另一个进程中的设备共享资源". 但不清楚如何传递此句柄.我可以将此句柄的值传递给另一个进程吗?还是我需要一些
..
我正在开发屏幕录制应用程序.我的问题是,在使用CreateDXGISurfaceBuffer制作样本之前,我需要调整Texure2d的大小.我是Mediafoundation的新手,在阅读文档后,我从网站上找不到任何示例代码.我正在使用IDXGIOutput1 :: DuplicateOutput获取屏幕纹理.有没有更好的方法来调整纹理大小而不影响性能? 解决方案 视频处理器MFT 可以缩
..
我正在开发一个需要两个全屏Direct3D显示的程序.根据文档我应该在窗口模式下创建交换链,然后切换到全屏模式.虽然在Windows 8上可以正常工作(当前我仅使用Alt-Enter进行切换),但在Windows 7上却无法使用.在Windows 7上,我遇到类似于您可以在此标记中找到我的粗糙原型. > 显然有其他错误过去专门针对Windows 7 .但是我似乎遇到了一个稍微不同的问题.
..
我将这段代码组合在一起,该代码获取了桌面的屏幕快照,并将其映射为原始像素数据访问,但是输出全为零.我不知道我做错了什么.在在线查看了许多桌面复制Api示例之后,我发现它们与我的之间没有任何区别. 这是我初始化所有内容的方法,并且不会引发任何错误. BOOL init() { CHECKHR(D3D11CreateDevice(nullptr, D3D_DRIVER_TYPE_H
..
我想了解DXGI桌面复制.我已经读了很多书,这是我从Microsoft网站上的DesktopDuplication示例的一部分复制的代码.我的计划是从DesktopImage获取缓冲区或数组,因为我想为其他程序创建新的Texture.我希望有人可以向我解释我该怎么做. void DesktopDublication::GetFrame(_Out_ FRAME_DATA* Data, _Out
..
我正在使用AcquireNextFrame制作我的桌面的屏幕截图.是否可以在设置中设置我想要的输出图像的尺寸? 我在文档中看到此功能IDXGIOutput::SetDisplaySurface可能会有所帮助. 这是我的代码: //Here I init a output texture with less resolution D3D11_TEXTURE2D_DESC desc;
..
我编写了一个可以在OpenGL,DirectX 9和DirectX 11之间切换以进行渲染而无需重新启动或重新创建窗口的应用程序.在OpenGL和DirectX 9之间以及在DirectX 11模式之间进行切换效果很好,但是,在使用DirectX 11之后,其他渲染模式将不再起作用. 释放所有DirectX 11接口后,窗口仍显示最后渲染的帧,甚至在调整窗口大小时也可以正确更新.可以创建Di
..
我正在开发一个游戏的扩展程序,该游戏仅打开HDC,供插件开发人员使用. 但是,我已经用尽了GDI +/Direct2D绘图功能,该功能对于我想要实现的速度已经足够快了-图像效果(添加剂,混合,乘法混合等). 我很清楚Direct2D提供了一个效果工具包,但是它需要平台更新(对于Windows 7),并且根本不理想. 因此,我只剩下Direct3D. MSDN/Google搜索提供
..
我正在创建一个多监视器全屏DXGI/D3D应用程序.我在准备创建交换链的过程中将列举所有可用的输出和适配器. 使用DXGI的 IDXGIFactory创建我的交换链时: :CreateSwapChain 方法,我需要提供一个交换链描述,其中包括类型为解决方案 环顾四周后,我偶然发现了EnumDisplaySettings旧版GDI函数,该函数使我可以访问当前的分辨率和刷新率.将此与IDXG
..
我正在尝试使用MediaFoundation API对视频进行编码,但是在将样本推送到SinkWriter时遇到问题. 我正在获取要通过桌面复制API进行编码的帧.我最终得到的是带有桌面图像的ID3D11Texture2D. 我正在尝试创建一个包含该表面的IMFVideoSample,然后将该视频示例推送到SinkWriter. 我已经尝试过以不同的方式来解决这个问题: 我
..
我想使用DXGI格式DXGI_FORMAT_R1_UNORM在DirectX 11中创建每像素1位的单色纹理2D 我已经尝试了以下操作,但显示以下错误: D3D11错误:ID3D11Device :: CreateTexture2D:设备不支持格式R1_UNORM. [STATE_CREATION错误#92:CREATETEXTURE2D_UNSUPPORTEDFORMAT] D3D11:对
..