问题标签 [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 回答
1038 浏览

c++ - DirectX 12 资源绑定

如何将资源绑定到 D3D12 中的不同着色器阶段?

我写了两个着色器,一个顶点着色器和一个像素着色器:

这是顶点着色器:

这是像素着色器:

如果我用函数编译这两个着色器D3DCompile并用 反映它D3DReflect并检查着色器描述中的 BoundResorces 成员,它们都有一个名为 $Params 的常量缓冲区,分别包含统一变量。问题是这两个缓冲区都绑定到插槽 0。绑定资源时,我必须使用 ID3D12RootSignature 接口,该接口可以将资源绑定到资源插槽。如何将顶点着色器的 $Params 缓冲区仅绑定到顶点着色器,将像素着色器的 $Params 缓冲区仅绑定到像素着色器?

提前致谢,

集邮者

0 投票
1 回答
454 浏览

directx - DirectX 12 不绘制到渲染目标

我自己无法解决 DirectX 12 的问题。我写了一个小程序,应该在屏幕上渲染一个三角形。然而,当我执行应用程序时,没有可见的三角形。所以我启动了 NVidia 的 nsight 调试器。奇怪的是三角形已被绘制到深度模板缓冲区而不是后台缓冲区。

在此处输入图像描述

如果您需要任何代码片段,请在评论中写下,我会发布。

提前致谢

0 投票
2 回答
5272 浏览

c# - 有没有办法在 WPF 窗口中托管 DirectX12 应用程序?

我知道这个问题的术语肯定是错误的,但请多多包涵,试着从我门外汉的角度来看事情(我没有计算机技术的形成,我是一个自学成才的爱好者。我得到的最接近的编程语言的正规教育是我学校的机器人俱乐部)。

我想要的是能够使用托管 DirectX 12 作为我的应用程序的“背景”,以及游戏循环等等。并且,如果可能的话,能够拥有 WPF 控件,如功能区或工具箱或实际 directX 游戏周围的菜单。我一直在寻找整个互联网,我发现的只是 Windows 和 DirectX 9.0 的非常旧的东西;我希望这些天有新的东西。

我尝试了 Windows Form 方法,基本上是这样的:

不会抛出异常,窗口根本不会呈现。应用程序运行,但窗口不显示。我不认为这会起作用,因为没有游戏循环并且render不会从任何地方调用,但我没想到窗口甚至没有显示。如果我注释掉调用 initDevice() 的行,WPF 的空白窗口会正常显示

然后我发现该CompositionTarget.Rendering事件每帧(或滴答声?)被调用一次,因此该事件的处理程序必须用作游戏循环。

所以我尝试了这个:

即使应用程序正在运行并且没有崩溃,仍然没有显示窗口。

最后我尝试了同样的事情,但没有处理CompositionTarget.Rendering,而是使用 DispatcherTimer,并从其Tick事件处理程序内部调用 render 。结果相同:没有窗口。

谁能指出我正确的方向?

0 投票
1 回答
974 浏览

c++ - 如果调用 RSSetScissorRects,事件上的 WaitForSingleObject 会导致访问冲突

WaitForSingleObject 函数导致以下错误

在 DrawTexturedCube.exe 中的 0x00007FFA02794AD0 (d3d12warp.dll) 处引发异常:0xC0000005:访问冲突读取位置 0x0000000000000000

在等待上一帧完成时。该代码取自 MSDN DirectX12 示例代码 ( https://msdn.microsoft.com/en-us/library/windows/desktop/dn899189%28v=vs.85%29.aspx )。

此错误仅发生在 4 个测试用例中的 1 个中。如果我从 paintEvent 循环中删除对以下函数的调用,访问冲突就会消失(但呈现到视口的图像也会消失,该循环的结构如下所述(https://msdn.microsoft.com/de-de/ )库/windows/desktop/dn903899%28v=vs.85%29.aspx)。

我正在使用 VS2015 并且调试器在所有测试用例中都没有将 fenceEvent_ 变量显示为 NULL 并且反汇编显示??? 对于所有测试用例中句柄指向的内存。我的着色器不使用几何着色器。

所以现在我有两个问题:

  1. WaitForSingleObject 函数如何在几乎相同的 4 个测试用例中只有 1 个导致访问冲突?
  2. RSSetScissorRects 函数和 WaitForSingleObject 函数是如何相互关联的?
0 投票
1 回答
1082 浏览

visual-c++ - Directx12 绘制矩形

嗨我开始学习directx12。我对以前的版本一无所知。

我正在关注这个渲染三角形的示例程序HelloWorldTriangle 。我想画一个矩形,

我变了

但仍然绘制了一个角度不同的三角形..请解释我必须改变什么才能得到一个矩形。

如果您给 headstart directx12 提供一些链接或书籍,这对我真的很有帮助 ..

提前致谢 ..

0 投票
2 回答
1660 浏览

c++ - 在 DirectX 12 中,切换管道状态对象的性能如何?

我正在研究 DirectX 12,我想知道切换管道状态对象的性能如何。我从我正在阅读的来源中得到相互矛盾的报告,即有些人说它非常慢,而另一些人则说它相当快。

使用的“慢”参数是:GPU 必须在引擎盖下做很多事情,比如在你使用SetPipelineState().

使用的“快速”参数是:管道状态的所有计算都是在创建管道状态对象时完成的,因此 GPU 可以只交换一些指针,仅此而已。

哪个是真的?性能如何SetPipelineState(),使用时我应该记住什么?

0 投票
2 回答
482 浏览

c++ - Direct3DCreate9(D3D_SDK_VERSION) 的 D3D12 等效项是什么?

所以我目前正在编写一个 D3D12 引擎,并且想知道这个 D3D9 函数的 D3D12 等效项是什么?

0 投票
0 回答
259 浏览

directx-12 - DirectX12 帧资源

我目前正在开发一个我想要拥有 UI 的项目,我创建了一个 UI Manager 类,并在其中创建了适当的几何图形、着色器、布局,然后在我的主类中我可以在这个 Manager 类上调用 update 和 Draw

我的问题是按照 Frank Luna 的书,在主类中创建了一个框架资源,它包含所有项目和所有材料......我显然希望我的 UI Manager 类处理所有事情,所以我需要在我的内部有一个单独的框架资源我调用 update on 的 UI Manager 类,还是必须将创建的所有项目传递回主类并将它们添加到该框架资源?

希望这是有道理的,但如果需要,我可以显示一些代码来解释我的意思

谢谢

0 投票
1 回答
1818 浏览

texture-atlas - DirectX 12 是否消除了对纹理图集的需求?

我记得当我看到关于 DirectX 12 的最初讨论时,我认为它消除了对纹理图集的需要。但是,现在我正在浏览文档,这似乎不是一个明显的结论。

我见过的一个可以替代它的功能是 HLSL 中资源数组的动态非统一索引:

另一个潜在的功能是ExecuteIndirect,它将仍然是一堆单独的绘图和资源更改调用编码到缓冲区,并在单个 CPU 调用中一次将其提交给 GPU。

这两个都将解决纹理图集的限制(无法在图集区域上使用边界模式,有问​​题的 mipmapping),但我想知道性能特征或预期是否类似于纹理图集,或者该技术是否仍然合理。

我也很想知道答案是否适用于 Mantle、Vulkan 和 Metal。

0 投票
3 回答
1498 浏览

directx-12 - D3D12 的 SetGraphicsRootSignature 有什么意义?

我对该ID3D12GraphicsCommandList::SetGraphicsRootSignature方法的存在感到有些困惑。根据我对这个 MSDN 页面的了解,它的唯一有效用法似乎是始终在之后调用它SetPipelineState,并为其提供与创建管道状态对象时提供的相同的根签名。如果是这样,它不隐含有什么好处?还有其他方法可以使用此方法吗?