问题标签 [direct3d]

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 回答
2926 浏览

c++ - DirectX 9 或 10 覆盖

如何使用 DirectX 9 或 10 在游戏上绘制叠加层?

我发现不推荐使用 DirectShow 代码的代码,但它不会运行。

0 投票
3 回答
1804 浏览

resources - 从运行的 2d 游戏中提取图像

有一个基于 Direct3D 的 2d 游戏。这个游戏有很多图形和动画。从正在运行的游戏中提取动画图像序列的最佳方法是什么(例如使用内存转储)?有没有用于此类目的的特殊工具?

0 投票
3 回答
2198 浏览

directx - DirectX 闪烁视频

好吧,所以我写了一个自定义的 VMR9 分配器/演示器,它似乎工作正常。但是,当我尝试将视频帧从分配器/演示器表面复制到我的应用程序表面时,视频似乎闪烁。音频播放很好,所以我相当确定这不是机器陷入困境或其他任何问题。这是我在渲染循环中的代码。

但是,如果我将其更改为此(注释掉清除缓冲区)

这种闪烁消失了。我担心这在某种程度上是不好的形式/hackish,可能会导致比它解决的问题更多的问题。有没有人有这方面的经验?有更好的解决方案吗?

谢谢!

0 投票
2 回答
1456 浏览

c++ - 为什么在 Windows XP 中拔下显示器后 Direct3D 无法恢复?

一个有趣的错误出现了,我没有运气。在使用本机代码的窗口化 Direct3D9 程序中,我使用类似于以下内容处理丢失的设备:

这在 Vista 上运行良好,但在 XP 上似乎存在重大问题。如果显示器被拔下,或通过 KVM 从 PC 上切换,我永远不会收到D3DERR_DEVICELOST. 我收到的来自 TestCooperativeLevel 的唯一返回值是D3DERR_DEVICENOTRESET. 并且每次对 Reset 的调用都会给出一个 D3DERR_INVALIDCALL。我尝试通过执行以下操作强制程序使用关闭代码:

但没有任何变化。这个问题似乎只影响 Windows XP(目前在 SP2、SP3 上测试过)。我正在使用 2007 年 8 月的 DXSDK,目前无法更新。有没有人见过这个问题,或者知道为什么我不能重置我的设备?

更新:我相信我找到了解决方案,但仍然对上面列出的第二个代码段的失败感到困惑。在让 DirectX Debug 运行时通过远程调试工作后,我意识到 Reset 功能一直失败的原因是因为有未释放的资源。但是,如答案中所示应用完全相同的发布代码时,解决了该问题。我确实验证了程序在调用恢复函数之间没有创建 D3DPOOL_DEFAULT 对象。如果执行此问题的代码段中所示的重置,Direct3D 的结构中是否存在可能导致问题的东西?

0 投票
2 回答
1201 浏览

graphics - 是否有任何用于加载和处理/反汇编 Direct3D 着色器字节码的库?

是否有用于加载和处理/反汇编 fxc 生成的 Direct3D (10,11) 着色器字节码文件的库?

我知道许多开发人员(和硬件供应商)都有内部工具来加载和处理 D3D 着色器字节码格式,但由于从 D3D10 开始,着色器字节码格式是私有的且仅限二进制,我想知道是否有任何公共资源可供使用它。

0 投票
1 回答
902 浏览

c# - Direct3D 中的鼠标点击检测和 Transformation2D

我使用 Sprites 在 D3D 窗口中绘制图像。我在矩形(0、0、宽度、高度)内的每个精灵上绘制图像,并使用 Matrix.Transformation2D 将图像放置在渲染视图中。

例子:

如何检测到某个图像被点击?

已知参数: 1. 鼠标位置:mouseX, mouseY 2. 所有 transformation2D 参数 3. 精灵中图像的大小和位置。

这应该是足够的数据来获得我想要的,但我不知道该怎么做。

顺便说一句 - 没有世界转换或其他包含在计算中。我只是变换精灵。

0 投票
3 回答
1481 浏览

directx - D3D9 顶点中字段的位置(位置、法线等)

我正在尝试阅读为 DirectX 应用程序创建的 3D 模型,这些模型的定义方式如下:

  • 在文件头中,给出了网格的灵活顶点格式(FVF)(实际上,我测试的网格中有 D3DFVF_{XYZ,DIFFUSE,NORMAL,TEX1,TEX2} 的任意组合)
  • 然后,n顶点以线性模式给出,场根据 FVF 呈现。

但是,我不知道这些字段的顺序。逻辑是它在 DirectX 文档中的某个地方定义,但我找不到它。例如,这两种结构中哪一种是正确的FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_NORMAL(C 语法,但这个问题适用于每种语言)?

我想用所有可能的字段(例如,XYZ before DIFFUSE before NORMAL before TEX1 before TEX2)来回答这个问题。指向文档正确页面的指针也可以,因为我找不到它:)。

0 投票
2 回答
2105 浏览

c# - Direct3d/C# - 在精灵上绘制的矩形下模糊区域

知道怎么做吗?我正在绘制一个应该是半透明窗口的矩形。我设法通过绘制半透明纹理来实现透明度,但我也想模糊窗口下方的任何内容。

通常(例如使用 GDI)我会创建该区域的位图,将其模糊并将其绘制为窗口的背景。使用 Direct3D,我什至不知道如何使用已经渲染的任何内容来获取该区域。或者甚至可以有不同的方法,不是吗。请帮忙。

0 投票
4 回答
4689 浏览

c++ - 一个顶点缓冲区中有多个网格?

我需要为每个网格使用一个顶点缓冲区,还是可以在一个顶点缓冲区中存储多个网格?如果是这样,我应该这样做,我该怎么做?

0 投票
3 回答
1345 浏览

c++ - Direct3D 纹理后处理/复制

所以我正在尝试实现一些 Direct3D 后处理,但在渲染纹理时遇到了问题。基本上,我的程序如下所示:

我遗漏了一些部分 b/c 有相当多的代码(我只是想理解一般的想法)。不幸的是,上面的结果是一个空白屏幕。这是我想要发生的事情:

  1. 将场景渲染为纹理 (HDR)
  2. 通过 Brightpass 着色器将该纹理渲染到第二个纹理
  3. 将第二个纹理渲染到可见的 LDR 表面

请注意,如果我将上面的最后一行从

然后一切正常。请注意,我已经尝试跳过 Brightpass 着色器并简单地传递像素,但这也不起作用。