问题标签 [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.
c++ - DirectX 12 资源绑定
如何将资源绑定到 D3D12 中的不同着色器阶段?
我写了两个着色器,一个顶点着色器和一个像素着色器:
这是顶点着色器:
这是像素着色器:
如果我用函数编译这两个着色器D3DCompile
并用 反映它D3DReflect
并检查着色器描述中的 BoundResorces 成员,它们都有一个名为 $Params 的常量缓冲区,分别包含统一变量。问题是这两个缓冲区都绑定到插槽 0。绑定资源时,我必须使用 ID3D12RootSignature 接口,该接口可以将资源绑定到资源插槽。如何将顶点着色器的 $Params 缓冲区仅绑定到顶点着色器,将像素着色器的 $Params 缓冲区仅绑定到像素着色器?
提前致谢,
集邮者
c# - 有没有办法在 WPF 窗口中托管 DirectX12 应用程序?
我知道这个问题的术语肯定是错误的,但请多多包涵,试着从我门外汉的角度来看事情(我没有计算机技术的形成,我是一个自学成才的爱好者。我得到的最接近的编程语言的正规教育是我学校的机器人俱乐部)。
我想要的是能够使用托管 DirectX 12 作为我的应用程序的“背景”,以及游戏循环等等。并且,如果可能的话,能够拥有 WPF 控件,如功能区或工具箱或实际 directX 游戏周围的菜单。我一直在寻找整个互联网,我发现的只是 Windows 和 DirectX 9.0 的非常旧的东西;我希望这些天有新的东西。
我尝试了 Windows Form 方法,基本上是这样的:
不会抛出异常,窗口根本不会呈现。应用程序运行,但窗口不显示。我不认为这会起作用,因为没有游戏循环并且render
不会从任何地方调用,但我没想到窗口甚至没有显示。如果我注释掉调用 initDevice() 的行,WPF 的空白窗口会正常显示
然后我发现该CompositionTarget.Rendering
事件每帧(或滴答声?)被调用一次,因此该事件的处理程序必须用作游戏循环。
所以我尝试了这个:
即使应用程序正在运行并且没有崩溃,仍然没有显示窗口。
最后我尝试了同样的事情,但没有处理CompositionTarget.Rendering
,而是使用 DispatcherTimer,并从其Tick
事件处理程序内部调用 render 。结果相同:没有窗口。
谁能指出我正确的方向?
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 并且反汇编显示??? 对于所有测试用例中句柄指向的内存。我的着色器不使用几何着色器。
所以现在我有两个问题:
- WaitForSingleObject 函数如何在几乎相同的 4 个测试用例中只有 1 个导致访问冲突?
- RSSetScissorRects 函数和 WaitForSingleObject 函数是如何相互关联的?
visual-c++ - Directx12 绘制矩形
嗨我开始学习directx12。我对以前的版本一无所知。
我正在关注这个渲染三角形的示例程序HelloWorldTriangle 。我想画一个矩形,
我变了
至
但仍然绘制了一个角度不同的三角形..请解释我必须改变什么才能得到一个矩形。
如果您给 headstart directx12 提供一些链接或书籍,这对我真的很有帮助 ..
提前致谢 ..
c++ - 在 DirectX 12 中,切换管道状态对象的性能如何?
我正在研究 DirectX 12,我想知道切换管道状态对象的性能如何。我从我正在阅读的来源中得到相互矛盾的报告,即有些人说它非常慢,而另一些人则说它相当快。
使用的“慢”参数是:GPU 必须在引擎盖下做很多事情,比如在你使用SetPipelineState()
.
使用的“快速”参数是:管道状态的所有计算都是在创建管道状态对象时完成的,因此 GPU 可以只交换一些指针,仅此而已。
哪个是真的?性能如何SetPipelineState()
,使用时我应该记住什么?
c++ - Direct3DCreate9(D3D_SDK_VERSION) 的 D3D12 等效项是什么?
所以我目前正在编写一个 D3D12 引擎,并且想知道这个 D3D9 函数的 D3D12 等效项是什么?
directx-12 - DirectX12 帧资源
我目前正在开发一个我想要拥有 UI 的项目,我创建了一个 UI Manager 类,并在其中创建了适当的几何图形、着色器、布局,然后在我的主类中我可以在这个 Manager 类上调用 update 和 Draw
我的问题是按照 Frank Luna 的书,在主类中创建了一个框架资源,它包含所有项目和所有材料......我显然希望我的 UI Manager 类处理所有事情,所以我需要在我的内部有一个单独的框架资源我调用 update on 的 UI Manager 类,还是必须将创建的所有项目传递回主类并将它们添加到该框架资源?
希望这是有道理的,但如果需要,我可以显示一些代码来解释我的意思
谢谢
texture-atlas - DirectX 12 是否消除了对纹理图集的需求?
我记得当我看到关于 DirectX 12 的最初讨论时,我认为它消除了对纹理图集的需要。但是,现在我正在浏览文档,这似乎不是一个明显的结论。
我见过的一个可以替代它的功能是 HLSL 中资源数组的动态非统一索引:
另一个潜在的功能是ExecuteIndirect
,它将仍然是一堆单独的绘图和资源更改调用编码到缓冲区,并在单个 CPU 调用中一次将其提交给 GPU。
这两个都将解决纹理图集的限制(无法在图集区域上使用边界模式,有问题的 mipmapping),但我想知道性能特征或预期是否类似于纹理图集,或者该技术是否仍然合理。
我也很想知道答案是否适用于 Mantle、Vulkan 和 Metal。
directx-12 - D3D12 的 SetGraphicsRootSignature 有什么意义?
我对该ID3D12GraphicsCommandList::SetGraphicsRootSignature
方法的存在感到有些困惑。根据我对这个 MSDN 页面的了解,它的唯一有效用法似乎是始终在之后调用它SetPipelineState
,并为其提供与创建管道状态对象时提供的相同的根签名。如果是这样,它不隐含有什么好处?还有其他方法可以使用此方法吗?