问题标签 [directx-12]

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 投票
1 回答
997 浏览

c++ - 创建 Direct3D12 设备失败并出现 E_NoInterface

我正在尝试创建一个 D3D12 设备,如

https://msdn.microsoft.com/en-us/library/dn899120%28v=vs.85%29.aspx

我有一个 NVidia 670 gtx、Windows 10 preview build 9926 和最后一个 10041 windows sdk。

我还有最新的 NVidia beta 驱动程序,GeForce 的系统信息报告了 DirectX12 运行时。

打电话

向我返回带有 NOINTERFACE 错误代码的 HRESULT

奇怪的调用:

返回我一个有效的对象,但我不能使用 QueryInterface 来获取一个有效的设备对象。

请注意,我已经尝试使用 LoadLibrary/GetProcAddress 而不是使用 d3d12 标头,它返回相同的错误代码。

0 投票
1 回答
862 浏览

c++ - DirectX 12 开发现在是否可供公众使用?

在 Windows Technical Preview build 10074 中D3D12.dlld3d12SDKLayers.dlld3d12warp.dll包含在%WINDIR%\System32. With Visual Studio 2015 RCwith Tools for Windows 10(aka Windows Kits 10 - 10069) d3d12.lib,d3d12.h等包括在内。尽管微软似乎没有发布关于其可用性的新闻稿,但包含这些似乎表明它现在可用。这是正确的推理,还是需要其他什么?

0 投票
3 回答
3564 浏览

windows - 找不到任何 Directx3D 12 示例

现在我想了解 Directx 12 并阅读msdn。它说

工作示例随 SDK 一起安装,演示以下内容:

我在这里找到了 d3dC:\Program Files (x86)\Windows Kits\10\Redist\D3D 但是 Directx 12 的样本在哪里?谢谢。

0 投票
1 回答
2607 浏览

c++ - DIrectX 12 和 D3D12CreateDevice 失败

我正在尝试运行 microsoft DirectX12 代码示例,但在每种情况下,函数 D3D12CreateDevice 都会失败。我使用 Visual Studio 2015 和 Windows SDK 编译了代码。我有一个 GTX560Ti,我的驱动程序是 Windows 10 的 353.62。在 NVidia 面板上它写的是当前的 directX 版本 12 但在 dxdiag 面板上它写的是 11.2 。我认为问题就在这里......如何解决问题并运行directX代码?

0 投票
1 回答
3720 浏览

c++ - directx-12 - 如何使用具有多个描述符堆的命令列表?

目前通过微软的例子,值得注意的是,每个命令列表只使用一个 cbv_srv_uav 堆(+ 可能在额外的采样器堆上)。

每个 CommandList 是否可以使用多个堆?

所以我设置了堆和范围

之后我定义描述符表

因此,我在 rsv 堆中的 cpu 偏移量 0 和 1 处为纹理 1 和 2 创建 shaderResourceViews,并为 cbv 堆中 cpu 偏移量 0 处的常量缓冲区创建一个 constantbufferview

像这样:

现在是时候告诉命令列表引用这些堆了

在此之后,关闭命令列表总是抛出。

这是我如何告诉命令列表哪个表对应哪个堆:

如果我将所有对象描述为一个单一的描述符堆(如示例中)并且只使用该堆的不同偏移量,它就可以正常工作。

调试输出:

D3D12 错误:ID3D12CommandList::SetDescriptorHeaps:pDescriptorHeaps[1] 设置了在 pDescriptorHeaps 数组中较早出现的描述符堆类型。一次只能设置任何给定的描述符堆类型之一。[执行错误#554:SET_DESCRIPTOR_HEAP_INVALID] D3D12 错误:CCommandList::SetGraphicsRootDescriptorTable:当前在命令列表中未设置 CBV_SRV_UAV 描述符堆,因此设置 CBV_SRV_UAV 句柄的根描述符表无效。[执行错误#708:SET_DESCRIPTOR_TABLE_INVALID] D3D12 错误:CCommandList::SetGraphicsRootDescriptorTable:当前在命令列表上未设置 CBV_SRV_UAV 描述符堆,因此设置 CBV_SRV_UAV 句柄的根描述符表无效。[执行错误 #708:SET_DESCRIPTOR_TABLE_INVALID] D3D12 错误:CCommandList::SetGraphicsRootDescriptorTable: 当前在命令列表上没有设置 CBV_SRV_UAV 描述符堆,因此设置 CBV_SRV_UAV 句柄的根描述符表是无效的。[执行错误#708:SET_DESCRIPTOR_TABLE_INVALID]

0 投票
1 回答
2977 浏览

directx - 如何创建SwapChainForHwnd

在下面的代码中,其中 device 是一个ComPtr<ID3D12Device>成功初始化的实例D3D12CreateDevice,我得到了一个失败的HRESULT. 我得到值 0x887a0001。对于我做错了什么,我将不胜感激。

0 投票
1 回答
735 浏览

directx-12 - IDXGIFactory4::CreateSwapChain 返回 DXGI_ERROR_INVALID_CALL

我正在像这样创建我的交换链

在 Debug 模式下,这工作正常,但在 Release(在 x86 或 x64 中), CreateSwapChain 返回DXGI_ERROR_INVALID_CALL.

谁能向我解释为什么它在调试模式下工作,而不是在发布模式下工作?

谢谢!

注意:我使用的是 Direct3D 12

0 投票
1 回答
1248 浏览

c++ - DirectX 12 - 命令列表问题

试图理解命令列表。好吧,命令列表记录了我用于渲染的命令,还记录了绑定资源,比如说一个带有顶点数据的缓冲区。

这记录了顶点缓冲区的绑定。此时缓冲区发生了什么?如果我在记录后更改此顶点缓冲区的内容会发生什么?如果我在调用执行命令列表之后更改此顶点缓冲区的内容并且 gpu 尚未完成它会发生什么?

我猜 ExecuteCommandList 是一个异步函数调用,对吗?它是一次执行所有绑定(数据传输到 gpu),还是一一执行命令,甚至所有绑定?命令列表是由驱动程序执行的,还是全部发送到 gpu ?

好吧,因为缺乏好的例子,我还有很多问题。我会很高兴,如果你能回答其中的几个来说明清楚。

0 投票
1 回答
807 浏览

directx-12 - DirectX12 - ExecuteCommandLists 和 Present 函数

我在 Microsoft 示例示例中发现:

实际上是如何工作的?ExecuteCommandLists 是一个异步函数调用,因此这意味着代码将继续执行并命中 Present 函数。

当前通话后会发生什么?比方说,GPU 仍在绘图,工作和存在被调用。现在是同步呼叫吗?当 gpu 仍在绘制时,它不能显示缓冲区。那是对的吗 ?有人可以解释这里发生了什么吗?

0 投票
1 回答
579 浏览

directx-12 - DirectX 12/Mantle/Vulkan 和 HSA

随着 DirectX 12、Mantle 和 Vulkan 等低级图形 API 的兴起,我想知道这些 API 如何与异构系统架构 (HSA) 交互(如果有的话)?

据我了解,支持 HSA 需要一些开发人员的参与,但我很好奇现在是否有任何低级图形 API 自己处理这个问题,或者开发人员是否仍有负担充分利用它?

HSA 对于系统内存和视频内存之间的简化数据共享等功能特别有趣,特别是当它们都共享相同的物理 RAM 时。

由于这个问题可能特定于当前的事态,我对这种概述很好(尽管有关未来路线图的信息会很好),我会接受一个只涵盖单个图形 API 的答案(因为我怀疑许多人(如果有的话)都熟悉所有三个加 HSA)。另外,如果我完全误解了它的工作原理,那么也请随时指出这一点;我对这两种技术都不太熟悉,但想知道它们目前是如何交互的。