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

c# - 如何在显示器上包装视频?

如果我有一个视频文件,它定义了一个 6144 像素长 (x) x 64 像素高 (y) 的视频图像,并且我想显示该视频,以便它在监视器的末端换行。换句话说,我想在显示器上从位置 0,0 开始显示视频的前 1024 个像素,然后从位置 0,64 开始显示视频像素 1024 到 2047,并重复此操作,直到显示器上显示所有 6144 个像素。这意味着视频需要在 1024x768 显示器上环绕 6 次。

做这个的最好方式是什么?DirectX、DirectShow、Media Foundation 或 Windows Media Player ActiveX 控件能否自动为您处理这种包装?我需要最好在 C# 中执行此操作,但不反对使用 C++ 本机。还是这样做的唯一方法是将视频分成6个单独的部分并在单独的窗口中播放?如果将它们分成 6 个单独的视频并在 6 个单独的窗口中播放是唯一合理的方式,那么您如何确保它们同时开始以便同步?

只需考虑下面的每条评论,ffmpeg 和/或 C# 就可以将这个 6144 x 64 像素的视频文件转换为如下内容:

换句话说,它看起来像被包装但实际上只是一个 1024 x 384 的视频?

0 投票
1 回答
378 浏览

c++ - Why does my background flicker through my meshes in DirectX 12 Release build?

I have been developing this game in C++ in Visual Studio using DirectX 12. I used the Debug build configuration during development and the graphics were smooth as butter.

When I was preparing to publish the game on the Windows Store so I could share it with friends as play testers, I switched to Release build configuration. As soon as I did that I started getting this flicker of the back-ground color coming through my wall meshes.

Here is a short video that shows the flicker. Here is a longer video that I made before switching to Release build configuration that shows there is no flicker.

I am new to DirectX 12. This project was my teacher. I studied Microsoft's Direct3D 12 Graphics, and I studied the DirectX 12 templates in Visual Studio. I felt quite pleased that I was able to master DirectX 12 well enough to produce this game as well as I did. Then the Release thing, and the flicker thing, and I am at a loss.

Is this likely to be a shader issue? or a command queue issue? or a texture issue? or something else?

0 投票
2 回答
1775 浏览

c++ - 错误 C2679 二进制“=”:未找到采用“int”类型右侧操作数的运算符(或没有可接受的转换)

我正在尝试使用 DirectX 12 在 C++ 中创建一个动态数组。我在这里找到了一个很好的数组,做了一些矿工更改,因为它是为 DirectX 11 创建的。

运行时出现此错误。

严重性代码 描述 项目文件行抑制状态

错误 C2679 二进制“=”:未找到采用“int”类型右侧操作数的运算符(或没有可接受的转换)

这是它说有问题的代码。

这是完整的标题。

.cpp 文件可应要求提供。

0 投票
1 回答
1051 浏览

compute-shader - D3D12 使用后缓冲表面作为无序访问视图 (UAV)

我为学校项目制作了一个简单的光线追踪器,计算着色器应该用于对三角形或其他一些图元进行着色。为此,我想直接在计算着色器中写入后缓冲表面,然后立即呈现结果。我确定这在 DX11 中是可能的,尽管我似乎无法让它在 DX12 中工作。

我无法收集有关此的太多信息,但我发现这个 gamedev 线程讨论了我试图弄清楚的完全相同的问题,他们似乎得出了我的解决方法的结论:写入中间纹理然后采样在管道中。我不能完全接受这在 dx12 中是不可能实现的。为什么要删除该功能?是不是排队系统消除了一些开销,使得它没有必要拥有这个功能?

有没有什么方法可以实现光线追踪器,而无需写入单独的纹理,然后在管道中采样或将其复制到后台缓冲区?实现性能的最佳选择是什么?

0 投票
2 回答
1830 浏览

c++ - 多个常量缓冲区 - 寄存器 - dx12

我通过该教程学习 dx12: https ://www.braynzarsoft.net/viewtutorial/q16390-directx-12-constant-buffers-root-descriptor-tables#c0

我尝试修改此步骤以获得 2 个常量缓冲区(如果我理解得很好,则为寄存器 b0 和 b1)。

为此,我开始在我的根符号中说有 2 个参数:

但是现在我无法将常量缓冲区链接到变量,我尝试在这部分代码中进行修改:

感谢

0 投票
1 回答
650 浏览

directx-11 - RWTEXTURE2D 下的 Interlockedadd 函数出错。(HLSL)

我在 HLSL 计算着色器中遇到了关于 intelocked 的问题。这是我的代码

然后我将纹理数据读取到 cpu。实际上,一个组的线程数是1024(最大)。我想每个(x,y)坐标值是1024。但是值是64(专用卡)或32(集成卡)。有人能告诉我吗发生在 hlsl 中?太感谢了!

0 投票
1 回答
465 浏览

c++ - Effects11d.lib 文件,Visual Studio 2017/2015 上的 DirectX11

现在,我的团队正在研究 DirectX11,这本书的名称是使用 DirectX11 进行 3D 游戏编程的介绍。

正如书中所说,我们正在尝试建立我们的视觉工作室(ver 2017, 2015)。但我们失败了,因为缺少 Effects11d.lib 文件。

我们在哪里可以下载或找到该文件?(该文件不在安装 Windows 的 C 盘上)

如果有其他解决方案,请给我建议

0 投票
1 回答
830 浏览

c++ - 实体组件系统 - 渲染方法

我目前正在使用 ECS 和 DirectX12 进行一个小型项目,并想就是否有“首选”方式或替代方式来解决我的问题获得一些建议。

让我给一个可以渲染的实体一个非常基本的布局

方法一

加载实体时,它将加载每个组件。它到达网格组件,现在将加载网格数据并创建所需的缓冲区并将它们存储在渲染系统中(通过能够从世界中获取渲染系统)。

假设下一个实体出现并且也想要相同的网格,它会检查渲染系统以查看它是否已经存在,因此不需要再次加载它,而只需为该实体创建一个新副本。

方法二

在加载实体之前,渲染系统将预先加载一个网格列表(这意味着每次要将新网格包含到系统中时都需要更新一些列表)。

现在,当实体被加载时,它们可以有一个标签来匹配渲染系统中网格上的标签。


当我开始使用方法 1 并发现网格组件处理加载时,我不太确定最好的方法是什么,这似乎是一种简单直接的方法,但是我之前没有做过类似 ECS 方法的事情,我想得到建议,因为我可能忽略了一种更有效的更受欢迎的方法。

对于稍后要完成的工作,我要记住的问题是能够使用相同的网格类型 PSO 等处理批处理对象。

0 投票
1 回答
264 浏览

c# - 将 Directx12 资产移植到 XAML 元素中:关于 WRL::ComPtr 替换的建议?

我正在从 DirectX12 Win32 桌面示例创建 WPF 资产(如D3D11Image):D3D12PipelineStateCache,因此我可以将其作为XAML 元素嵌入到 WPF 应用程序中。

Microsoft Directx12 示例广泛使用ComPtr(using Microsoft::WRL::ComPtr;#include <wrl.h>)、智能指针,但由于以下原因构建失败:

Repro:我开始在 D3D12PipelineStateCache 项目中更改配置属性:

  • 配置类型:动态库
  • clr 支持:/clr
  • .net 目标:v4.5

目标是“通过停止来自 win32 的代码来分离停止”并使其与 XAML 资产接口。

您是否有任何建议替换智能指针,ComPtr或者您是否建议以不同的方式进行,例如,通过与 clr dll 互操作构建纯 c++ dll,在这种情况下,如何?

0 投票
0 回答
707 浏览

graphics - DX12 具有异构多 GPU 支持而 Vulkan 没有,这意味着什么?

我一直在研究使用 vulkan 在集成显卡和独立显卡功能上利用计算功能。然而,根据这篇文章,尽管通过兼容的 SLI 配置支持多 gpu,但 Vulkan 不支持异构多 gpu。同一篇文章继续声称 DX12 实际上确实具有这种支持,“更进一步”。

在我的应用程序中,我想利用两个独立设备的计算能力,它们不兼容 SLI/Xfire,但也不一定在相同的计算工作负载上工作,不需要在每个设备之间共享内存来计算它们的工作负载。

我不可能让两台设备在同一个实例中做两件不同的事情,如果有必要,先通过复制到主机来共享内存吗?这个答案似乎暗示实际上可以做到这一点,所以我很困惑异构多 GPU 对 DX12 的实际含义,以及这与我在 Vulkan 中可以做的有什么不同。