完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我正在尝试Capture SDK 5.0中包含的DXIFRShim示例,但我没有制作视频,而且我运行的游戏(激战1)也回归到DirectX 8。 我将分享我采取的步骤,也许有人可以看看我做错了什么? 我已经尝试了NvFBCToSys和NvFBCHWEncode没有问题,但我想做渲染窗口捕获而不是桌面。 我在VS2013中打开了DXIFRShim_VS2013.sln。 我将构建切换到Release,并使用Win32和x64配置构建了解决方案。 我将生成的Win32 d3d9.dll放入System32文件夹,并将生成的x64 d3d9.dll放入SysWOW64文件夹,将原始.dll重命名为_d3d9.dll。 示例描述文档说要重命名。 (我测试了这一步并跳过这一步,既没有奏效)我用DXGI.dll文件做了以上操作。 (我使用Win32和x64配置执行了此步骤,但都没有工作)我使用以下命令启动了StartApp.exe: StartApp.exe -r 800x600 -gpu 0 -audio 0 D: User Guild Wars Gw.exe 我检查了游戏的设置页面,它说它使用的是DirectX 8.它使用DirectX 9而没有上述修改。 关闭游戏 在StartApp.exe的命令行中按Ctrl + C. 在任何地方都没有生成.h264视频文件(考虑到步骤6中的问题,这并不奇怪)。 示例描述文档说应该有一个名为NvIFR.h264的文件。 有谁知道我哪里出错了? 如果需要,附加信息: Windows 8 64位 Nvidia GRID K520 以上来自于谷歌翻译 以下为原文 Hello, I am trying out the DXIFRShim sample included in the Capture SDK 5.0, and I do not get a video produced, and the game that I run (Guild Wars 1) falls back to DirectX 8. I'm going to share the steps I took, and maybe someone could see if I did anything wrong? I've tried NvFBCToSys and NvFBCHWEncode without issues, but I want to do render window capture instead of desktop.
Does anyone know where I went wrong? Additional info if needed: Windows 8 64 bit Nvidia GRID K520 |
|
相关推荐
15个回答
|
|
我没有尝试解决你的问题,但有一些提示:
- 尝试启用GRID“日志”。 它披露了许多内部错误并且失败了。 请参阅“NVIDIA Capture SDK编程指南.pdf”第64页 - “4.1.4。启用文本日志的生成” - 我正在使用“NVFBCLog = 42”(回答生命,宇宙和一切)。 - 查看会议“S6307 - 了解NVIDIA GRID?SDK”(http://on-demand-gtc.gputechconf.com/gtc-quicklink/ih0cN)。 您可以尝试GRID-devtech-support@nvidia.com(我放弃了这个,因为从未收到任何答案。)。 以上来自于谷歌翻译 以下为原文 I did not try to solve your problem but there are some hints: - Try to enable GRID "logs". It disclosure many internals errors and fails. See "NVIDIA Capture SDK Programming Guide.pdf" page 64 - "4.1.4. Enabling generation of textual logs" - I am using "NVFBCLog=42" (answer to life, the universe, and everything). - Look at session "S6307 - Get to Know the NVIDIA GRID? SDK" (http://on-demand-gtc.gputechconf.com/gtc-quicklink/ih0cN). You can try GRID-devtech-support@nvidia.com (I gave up this because never received any answer.). |
|
|
|
嗨bloodelves88,
根据文件, 在32位WOW系统文件夹中(通常为C: Windows SysWOW64) 对于64位版本,系统文件夹通常为C: Windows System32。 我想你可能错误地放置了填充DLL。 加里 以上来自于谷歌翻译 以下为原文 Hi bloodelves88, According to the doc, In the 32-bit WOW system folder (which is usually C:WindowsSysWOW64) For 64-bit build, the system folder is usually C:WindowsSystem32. I think you may have misplaced the shim DLLs. Gary |
|
|
|
我已启用日志,并且在Gary修复之前它没有输出任何内容。
我将看看会议,看看我是否可以从中学到更多东西。 谢谢。 嗨加里,哪个文件来自? 我没有看到它。 我正在使用捕获SDK中提供的文档。 还有更多我不了解的文档吗? 除此之外,谢谢,这似乎解决了这个问题。 以上来自于谷歌翻译 以下为原文 I've enabled the logs and it didn't output anything before Gary's fix. I'll take a look at the session and see if I can learn anything more from it. Thanks. Hi Gary, which doc is that from? I don't see it. I'm using the docs provided in the capture SDK. Are there more docs I'm not aware of? Aside from that, thanks, that seemed to solve the issue. |
|
|
|
此文档位于Usage.txt中,该文件位于SDK samples DirectxIFR DXIFRShim文件夹中。
加里 以上来自于谷歌翻译 以下为原文 This doc is in Usage.txt, which resides in the folder SDKsamplesDirectxIFRDXIFRShim. Gary |
|
|
|
嗨加里,我的文件夹中不存在该文件。
有什么方法可以获得它吗? 我在使用DirectX 10/11游戏时遇到了很多麻烦。 虽然示例程序生成d3d9.dll文件,但它不会生成d3d10.dll或d3d11.dll文件。 它对DirectX 10和11不起作用吗? 样本描述文档确实说它适用于DirectX 9 / 9Ex / 10.0 / 10.1 / 11.0。 当我运行DirectX 11游戏时,DXGI.shim.log产生这3行(以及许多其他行): [ERROR] [17:38:45]无法创建pSharedTexture [错误] [17:38:45]无法设置NvIFR。 [WARN] [17:38:45]无法启动d3d11编码器 我又错过了什么吗? 我感谢任何帮助。 以上来自于谷歌翻译 以下为原文 Hi Gary, that file does not exist in my folder. Is there any way I could obtain it? I'm having quite a bit of trouble getting the program to work with DirectX 10/11 games. While the sample program produces a d3d9.dll file, it does not produce a d3d10.dll or d3d11.dll file. Does it not work for DirectX 10 and 11? The sample description docs does say it is for DirectX 9/9Ex/10.0/10.1/11.0. DXGI.shim.log produces these 3 lines (among many others) when I run a DirectX 11 game: [ERROR][17:38:45] failed to create pSharedTexture [ERROR][17:38:45] Failed to setup NvIFR. [WARN ][17:38:45] failed to start d3d11 encoder Am I missing something again? I appreciate any help I can get. |
|
|
|
|
|
|
|
None
以上来自于谷歌翻译 以下为原文 Windows 8.1 Pro 64 bit. DxDiag says I do have DirectX 11. I'm getting different results in DXGI.shim.log when running World of Tanks and Wildstar. World of Tanks: [DEBUG][12:57:53] CreateDXGIFactory_Proxy [DEBUG][12:57:53] CreateDXGIFactory1_Proxy [DEBUG][12:57:53] IDXGIFactory_EnumAdapters_Proxy [INFO ][12:57:53] (DXGI) Using adapter: coordinate ordinal=0, D3D ordinal=0 [DEBUG][12:57:54] IDXGIFactory_EnumAdapters_Proxy [DEBUG][12:57:54] IDXGIFactory_EnumAdapters_Proxy [INFO ][12:57:54] (DXGI) Using adapter: coordinate ordinal=0, D3D ordinal=0 [DEBUG][12:57:54] IDXGIFactory_EnumAdapters_Proxy [INFO ][12:57:54] (DXGI) Using adapter: coordinate ordinal=0, D3D ordinal=0 [DEBUG][12:57:54] IDXGIFactory_EnumAdapters_Proxy [INFO ][12:57:54] (DXGI) Using adapter: coordinate ordinal=0, D3D ordinal=0 [DEBUG][12:57:54] IDXGIFactory_EnumAdapters_Proxy [INFO ][12:57:54] (DXGI) Using adapter: coordinate ordinal=0, D3D ordinal=0 [DEBUG][12:57:54] IDXGIFactory_EnumAdapters_Proxy [INFO ][12:57:54] (DXGI) Using adapter: coordinate ordinal=0, D3D ordinal=0 [INFO ][12:57:54] IDXGIFactory_CreateSwapChain_Proxy: 0x0, windowed [DEBUG][12:57:54] IDXGIFactory_CreateSwapChain_Proxy: This=0032BBF8, pDevice=08FF26CC, *pDesc=[BufferDesc=[Width=0, Height=0, RefreshRate=0/1, Format=87, ScanlineOrdering=1, Scaling=0], SampleDesc=[Width=1, Height=0], BufferUsage=112, BufferCount=2, OutputWindow=012A0A6E, Windowed=1, SwapEffect=0, Flags=2] [DEBUG][12:57:54] IDXGIFactory_EnumAdapters_Proxy [INFO ][12:57:54] (DXGI) Using adapter: coordinate ordinal=0, D3D ordinal=0 [DEBUG][12:57:54] IDXGIFactory_EnumAdapters_Proxy [INFO ][12:57:54] (DXGI) Using adapter: coordinate ordinal=0, D3D ordinal=0 [DEBUG][12:57:55] IDXGIFactory_EnumAdapters_Proxy [INFO ][12:57:55] (DXGI) Using adapter: coordinate ordinal=0, D3D ordinal=0 [DEBUG][12:57:57] NvIFREncoderDXGIBase::SetupNvIFR [INFO ][12:57:57] IDXGIFactory_CreateSwapChain_Proxy: 1024x768, windowed [DEBUG][12:57:57] IDXGIFactory_CreateSwapChain_Proxy: This=0C18BA10, pDevice=0D59C014, *pDesc=[BufferDesc=[Width=1024, Height=768, RefreshRate=0/1, Format=87, ScanlineOrdering=0, Scaling=0], SampleDesc=[Width=1, Height=0], BufferUsage=32, BufferCount=1, OutputWindow=00520AD8, Windowed=1, SwapEffect=0, Flags=0] [ERROR][12:57:57] failed to create pSharedTexture [ERROR][12:57:57] Failed to setup NvIFR. [WARN ][12:57:57] failed to start d3d11 encoder The last 6 lines then goes on to repeat until I close the game. Wildstar: [ERROR][12:59:32] OpenFileMapping() #1 fails. [DEBUG][12:59:32] CreateDXGIFactory1_Proxy [DEBUG][12:59:32] IDXGIFactory1_EnumAdapters1_ProxyAdapter=0, ppAdapter=0000006E3464F290 [INFO ][12:59:32] Grid adapter found (DXGI): NVIDIA GRID K520, coordinate ordinal=0, D3D ordinal=0 [DEBUG][12:59:32] IDXGIFactory1_EnumAdapters1_ProxyAdapter=1, ppAdapter=0000006E3464F290 [DEBUG][12:59:32] CreateDXGIFactory_Proxy [DEBUG][12:59:32] CreateDXGIFactory1_Proxy [DEBUG][12:59:32] IDXGIFactory_EnumAdapters_Proxy [INFO ][12:59:32] Grid adapter found (DXGI): NVIDIA GRID K520, coordinate ordinal=0, D3D ordinal=0 I'm going to take a look at the errors starting from the OpenFileMapping() error, but if there's something someone knows that can speed up my debugging process, that would be great. ------- Edit: The error from Wildstar is probably because the launcher starts before the client. I'm going to ignore this and work on the other errors. The error about "failed to create pSharedTexture" seems to have something to do with invalid/incorrect parameters. My debugging continues... |
|
|
|
请将DXIFRShim / DXGI / IDXGISwapChain.cpp第138行“TRUE”更改为“FALSE”,然后重试。
谢谢。 加里 以上来自于谷歌翻译 以下为原文 Please change DXIFRShim/DXGI/IDXGISwapChain.cpp line 138 "TRUE" to "FALSE" and try again. Thanks. Gary |
|
|
|
你是说这条线吗?
我在98号线上: pEncoder = new NvIFREncoderDXGI(this,desc.Width,desc.Height,desc.Format,FALSE,pAppParam); 我也发现,管理NvIFREncoderDXGIBase.cpp中互斥锁使用的“td.MiscFlags”导致了这个问题。 这解决了一个问题,现在还有另一个问题: [DEBUG] [20:16:45]打开共享内存:GRID_AppParam_0x29B3C [DEBUG] [20:16:46] CreateDXGIFactory1_Proxy [DEBUG] [20:16:46] CreateDXGIFactory1_Proxy [INFO] [20:16:46] IDXGIFactory1_CreateSwapChain_Proxy:1400x875,窗口化 [DEBUG] [20:16:46] IDXGIFactory1_CreateSwapChain_Proxy:This = 0000006AFFBBEA10,pDevice = 0000006AF6AD2238,* pDesc = [BufferDesc = [Width = 1400,Height = 875,RefreshRate = 0/0,Format = 24,ScanlineOrdering = 0,Scaling = 0],SampleDesc = [Width = 1,Height = 0],BufferUsage = 48,BufferCount = 1,OutputWindow = 0000000000370BA0,Windowed = 1,SwapEffect = 0,Flags = 2] [DEBUG] [20:16:46] NvIFREncoderDXGIBase :: SetupNvIFR [DEBUG] [20:16:46] IDXGIFactory1_EnumAdapters1_ProxyAdapter = 0,ppAdapter = 0000006A88B7BB20 [INFO] [20:16:46](DXGI)使用适配器:坐标ordinal = 1,D3D ordinal = 1 [INFO] [20:16:46] IDXGIFactory1_CreateSwapChain_Proxy:1400x875,窗口化 [DEBUG] [20:16:46] IDXGIFactory1_CreateSwapChain_Proxy:This = 0000006A8494A780,pDevice = 0000006A849B7E80,* pDesc = [BufferDesc = [Width = 1400,Height = 875,RefreshRate = 0/1,Format = 24,ScanlineOrdering = 0,Scaling = 0],SampleDesc = [Width = 1,Height = 0],BufferUsage = 32,BufferCount = 1,OutputWindow = 00000000043A0B0E,Windowed = 1,SwapEffect = 0,Flags = 0] [DEBUG] [20:16:46]成功创建了NvIFRToH264HWEncoder [DEBUG] [20:16:46]编解码器(H264 = 4,HEVC = 7):4 [DEBUG] [20:16:46]编码参数: 平均比特率:10.7288MB 峰值比特率:10.7288MB 帧率:50/1 共和党人长度:250 VBV缓冲区大小:1800000B VBV初始延迟:225000B 启用YUV444编码:0 速率控制:2 预设:0 [DEBUG] [20:16:46] NvIFRSetUpH264HWEncoder成功,目标尺寸:1920x1080 [INFO] [20:16:46] DXGI:打开共享资源 [ERROR] [20:16:46]无法打开共享资源,hr = -2147024809 [WARN] [20:16:46] d3d11 UpdateSharedSurface失败 [DEBUG] [20:16:46]没有睡眠以赶上帧率,delta = -31 [DEBUG] [20:16:46]没有睡眠以赶上帧率,delta = -22 [DEBUG] [20:16:46]没有睡眠以赶上帧率,delta = -12 [INFO] [20:16:46] DXGI:打开共享资源 [ERROR] [20:16:46]无法打开共享资源,hr = -2147024809 [WARN] [20:16:46] d3d11 UpdateSharedSurface失败 [INFO] [20:16:46] DXGI:打开共享资源 [ERROR] [20:16:46]无法打开共享资源,hr = -2147024809 ... //这一直持续到关闭游戏为止 ... [DEBUG] [20:16:50]删除Release()中的pEncoder,pEncoder = 0000006A803F2AA0 [DEBUG] [20:16:50]退出编码循环 调试继续...... 感谢Gary的帮助。 以上来自于谷歌翻译 以下为原文 Do you mean this line? It was on line 98 for me: pEncoder = new NvIFREncoderDXGI I too, found out that "td.MiscFlags" governing the use of mutex in NvIFREncoderDXGIBase.cpp was causing the issue. That fixed one problem, and now there is another: [DEBUG][20:16:45] Opening shared memory: GRID_AppParam_0x29B3C [DEBUG][20:16:46] CreateDXGIFactory1_Proxy [DEBUG][20:16:46] CreateDXGIFactory1_Proxy [INFO ][20:16:46] IDXGIFactory1_CreateSwapChain_Proxy: 1400x875, windowed [DEBUG][20:16:46] IDXGIFactory1_CreateSwapChain_Proxy: This=0000006AFFBBEA10, pDevice=0000006AF6AD2238, *pDesc=[BufferDesc=[Width=1400, Height=875, RefreshRate=0/0, Format=24, ScanlineOrdering=0, Scaling=0], SampleDesc=[Width=1, Height=0], BufferUsage=48, BufferCount=1, OutputWindow=0000000000370BA0, Windowed=1, SwapEffect=0, Flags=2] [DEBUG][20:16:46] NvIFREncoderDXGIBase::SetupNvIFR [DEBUG][20:16:46] IDXGIFactory1_EnumAdapters1_ProxyAdapter=0, ppAdapter=0000006A88B7BB20 [INFO ][20:16:46] (DXGI) Using adapter: coordinate ordinal=1, D3D ordinal=1 [INFO ][20:16:46] IDXGIFactory1_CreateSwapChain_Proxy: 1400x875, windowed [DEBUG][20:16:46] IDXGIFactory1_CreateSwapChain_Proxy: This=0000006A8494A780, pDevice=0000006A849B7E80, *pDesc=[BufferDesc=[Width=1400, Height=875, RefreshRate=0/1, Format=24, ScanlineOrdering=0, Scaling=0], SampleDesc=[Width=1, Height=0], BufferUsage=32, BufferCount=1, OutputWindow=00000000043A0B0E, Windowed=1, SwapEffect=0, Flags=0] [DEBUG][20:16:46] succeeded to create NvIFRToH264HWEncoder [DEBUG][20:16:46] Codec (H264=4, HEVC=7): 4 [DEBUG][20:16:46] Encoding Parameters: Average Bit Rate: 10.7288MB Peak Bit Rate: 10.7288MB Frame Rate: 50/1 GOP Length: 250 VBV Buffer Size: 1800000B VBV Initial Delay: 225000B Enable YUV444 Encoding: 0 Rate Control: 2 Preset: 0 [DEBUG][20:16:46] NvIFRSetUpH264HWEncoder succeeded, target size: 1920x1080 [INFO ][20:16:46] DXGI: to open shared resource [ERROR][20:16:46] failed to open shared resource, hr=-2147024809 [WARN ][20:16:46] d3d11 UpdateSharedSurface failed [DEBUG][20:16:46] No sleep to catch up frame rate, delta=-31 [DEBUG][20:16:46] No sleep to catch up frame rate, delta=-22 [DEBUG][20:16:46] No sleep to catch up frame rate, delta=-12 [INFO ][20:16:46] DXGI: to open shared resource [ERROR][20:16:46] failed to open shared resource, hr=-2147024809 [WARN ][20:16:46] d3d11 UpdateSharedSurface failed [INFO ][20:16:46] DXGI: to open shared resource [ERROR][20:16:46] failed to open shared resource, hr=-2147024809 ... // This goes on until I close the game ... [DEBUG][20:16:50] delete pEncoder in Release(), pEncoder=0000006A803F2AA0 [DEBUG][20:16:50] Quit encoding loop The debugging continues... Thanks for the help so far Gary. |
|
|
|
我无法重现你所看到的问题。
在您进行更改之后,DX SDK示例BasicHLSL11在Windows 10 Anniversay版本上运行良好。 目前我没有Windows 8安装程序。 我想知道它是否是由DX在不同版本的Windows上展示的不同行为引起的。 您可以在Windows 7或Windows 10上进行测试,并查看结果吗? (如果您没有安装这些操作系统,请告诉我。) 加里 以上来自于谷歌翻译 以下为原文 I'm not able to reproduce the problem you are seeing. After the change as you did, DX SDK sample BasicHLSL11 works well on Windows 10 Anniversay edition. Currently I don't have a Windows 8 setup. I'm wondering if it's caused by different behavior DX exhibits on different versions of Windows. Can you have a test on Windows 7 or Windows 10, and see the result? (If you don't have either of these OS readily installed, just let me know.) Gary |
|
|
|
我做了一些进一步的测试,似乎问题出现在64位游戏(虚幻引擎)上。
它在32位游戏(坦克世界)上完美运行。 BasicHLSL11恰好也是32位。 我正试图找到另一个64位游戏来测试这个理论,以确保它不是虚幻引擎的一些怪癖。 我没有安装其他操作系统,但我可以安装一个。 可能需要一些时间,因为我正在使用服务器计算机并且我没有完全访问权限。 以上来自于谷歌翻译 以下为原文 I did some further testing, and it seems the problem occurs on 64-bit games (Unreal Engine). It works perfectly on a 32-bit game (World of Tanks). BasicHLSL11 happens to be 32-bit as well. I'm trying to find another 64-bit game to test this theory to make sure it's not some quirk with Unreal Engine. I don't have another OS installed, but I may be able to get one installed. It may take some time though since I'm working on a server machine and I don't have full access to it. |
|
|
|
奇怪。
它现在似乎适用于32位和64位。 我不确定我之前做错了什么。 现在一切都很完美! 感谢Gary的所有帮助,你们非常乐于助人。 以上来自于谷歌翻译 以下为原文 Strange. It now seems to work on both 32 and 64-bit. I'm not sure what I did wrong earlier. Everything works perfectly now! Thanks for all the help Gary, you've been very helpful. |
|
|
|
|
|
|
|
嗨,似乎我现在无法替换或删除d3d9.dll和dxgi.dll文件。
它们始终由dwm.exe,Windows资源管理器或其他一些系统进程使用。 我不确定他们为什么突然被使用,但这种情况几个月前从未发生过。 有没有办法可靠地替换现在的文件? 到目前为止我已经尝试了这些,但没有一个有效: 杀死进程(dwm.exe刚回来) 使用命令行(del / F dxgi.dll)。 访问被拒绝。 使用注册表设置在下次重新启动时删除该文件。 引导进入安全模式以尝试删除该文件。 或者,是否还有其他方法可以使垫片层工作? 以上来自于谷歌翻译 以下为原文 Hi, it seems that I'm now unable to replace or delete the d3d9.dll and dxgi.dll files. They are always in use by dwm.exe, Windows Explorer, or some other system process. I'm not sure why they're suddenly in use, but this never happened a few months ago. Is there a way to reliably replace the files now? I've tried these so far and none of them worked:
Or perhaps, is there any other way to get the shim layer working? |
|
|
|
嗨,如果您使用的是Windows 7,则可以使用
sc stop uxsms 停止DWM使用dxgi.dll。 替换文件后,您可以重新启动DWM sc start uxsms 使用Window 8及更高版本,无法停止DWM。 您可以将填充程序DLL放在游戏文件夹中。 加里 以上来自于谷歌翻译 以下为原文 Hi, if you're using Windows 7, you can use sc stop uxsms to stop DWM from using dxgi.dll. After replacing the file, you can restart DWM by sc start uxsms With Window 8 and above, there's no way to stop DWM. You can place the shim DLL in the game folder instead. Gary |
|
|
|
只有小组成员才能发言,加入小组>>
使用Vsphere 6.5在Compute模式下使用2个M60卡遇到VM问题
3072 浏览 5 评论
是否有可能获得XenServer 7.1的GRID K2驱动程序?
3490 浏览 4 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 00:45 , Processed in 1.062248 second(s), Total 105, Slave 88 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号