问题标签 [slimdx]

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 投票
2 回答
4850 浏览

slimdx - 如何将纹理加载到着色器 (DirectX11/SlimDX)

我有一个现成的 Texture2D;我有一个显然可以工作的着色器纹理采样器和着色器纹理变量,我可以将它放入 Texture2D。

唯一的问题是,我不知道如何在 DirectX11 中将纹理加载到着色器中——要么 Google 没有帮助,要么只是我无法构建好的搜索词。

我需要什么:将采用 Texture2D 并将其加载到着色器中的代码。例如,有关如何执行此操作的链接。

无论如何,这是我的着色器代码:

谢谢。

0 投票
1 回答
10309 浏览

c# - D3DERR_INVALIDCALL:无效调用 (-2005530516)

在我的 WinXP(SP3) PC 上进行测试时,我似乎遇到了错误。错误如下,但在使用我的 Win7 笔记本电脑时我没有得到它。

导致错误的代码是:

据我所知,崩溃与创建新设备有关。

0 投票
1 回答
633 浏览

c# - 在 C# 中进行 SlimDX 屏幕捕获时,未处理 NullReferenceException

尝试使用 SlimDX 截屏:

收到错误:

NullReferenceException 未处理。你调用的对象是空的。

在线:

我究竟做错了什么?

0 投票
2 回答
15647 浏览

c# - 将 Surface 保存到位图并在 C# 中优化 DirectX 屏幕捕获

经过一整天的测试,我想出了这段代码,它使用 DirectX (SlimDX) 捕获当前屏幕并将其保存到文件中:

然后我执行以下操作:

..代码在这里

结果是:

0.当我不保存表面时:平均。经过时间:80-90ms

1.当我也将 Surface 保存到 BMP 文件时:格式: ImageFileFormat.Bmp ,avg。经过时间:120ms,文件大小:7mb

2.当我也将Surface保存为PNG文件时:格式:ImageFileFormat.Png,avg。经过时间:800ms,文件大小:300kb

问题是:

1.是否可以优化当前的图像捕获?根据这篇文章 - Directx 屏幕捕获应该比 GDI 更快。对我来说,GDI 通常需要 20 毫秒才能获得“位图”,而使用 DX 需要 80 毫秒才能获得“冲浪”(两者都没有保存)。

http://www.codeproject.com/Articles/274461/Very-fast-screen-capture-using-DirectX-in-Csharp

2a. 如何更快地将 Surface 保存为 PNG 图像格式?当我将表面保存到 7mb BMP 文件时,所花费的时间几乎比我将相同表面保存到 300kb PNG 文件时少了 6 倍。

2b。是否可以将 Surface 直接保存到 Bitmap,这样我就不必创建临时文件了?

所以我不必执行以下操作:Surface -> 图像文件;图像文件打开 -> 位图;,而是:表面 -> 位图

目前为止就这样了。我很乐意接受任何提示,谢谢!

编辑:

刚刚解决了2b:

编辑2:

比:

100 毫秒!!!是的,我也不敢相信自己的眼睛;)我不喜欢创建临时文件的想法,但是性能提升 50%(100-200ms 而不是 200-300+)是一件非常好的事情。

0 投票
1 回答
912 浏览

video - SlimDX / DirectX 中的 YUV 覆盖?

我使用 ffmpeg 解码视频文件,解码后得到 YUV 图像。如何使用 SlimDX / DirectX 将此 YUV 图像显示为表面(或纹理?)的覆盖?

谢谢。

0 投票
1 回答
653 浏览

geometry - 在 SlimDX 中为球体添加纹理

我只是不知道如何将纹理应用于球体网格(使用 Mesh.CreateSphere 创建)。我想问题是那些用 Mesh.Create 创建的网格没有纹理坐标(或者他们有一些?),我只是不知道如何添加它们。我已经找到了一些 MDX 的示例代码,但它们使用了一个在 slimDX 中不可用的 CustomVertex 结构。将纹理添加到标准网格有那么困难吗?我想知道为什么 slimDX 中没有一些预定义的函数可以做到这一点……谢谢你的建议。

(ps 我使用的是 Direct3D9)

0 投票
1 回答
754 浏览

text - 使用模板缓冲区绘制文本

我设置了模板缓冲区,因此只有部分屏幕受到绘图调用的影响。具体来说,我想画一个小区域。它将成为一个 UI,因此绘制的所有内容都将是某种 2D 精灵。使用 sprite 对象效果很好。该区域之外的精灵被切断。但是,当我添加文本时,之后绘制的所有内容和文本本身都不会被切断。PIX 显示,一旦调用绘制文本,就会设置一个新的 DepthStencilState 并关闭模板缓冲区。文本由负责绘制其他精灵的同一精灵对象绘制。

绘图是通过 SlimDX.Direct3D10.Font.Draw 方法执行的。

有没有办法强制 DirectX 不改变状态对象?我使用 SlimDX,但根据它的代码,它似乎不负责状态变化。

尼科

0 投票
1 回答
946 浏览

c# - 在 Windows XP 机器上运行 SlimDX C# 应用程序的问题

我制作了一个简单的 C# WinForms 应用程序,它可以进行屏幕捕获

现在调用它:

当我在 Windows 7 x64 上运行此应用程序时,一切正常(在此处编译)

不幸的是,当我尝试在 Windows XP x86 机器上运行此应用程序时 - 我收到以下错误:

http://i.minus.com/ipilqHeWqbvKe.png

我如何尝试修复它?

  • 在 WinXP 上安装最新的 DX

  • 在 WinXP 上安装了最新的 SlimDX(顺便说一句,这一步解决了我之前的问题)

  • 在 WinXP 上安装最新的 .Net Framework v.4

  • 将此应用程序编译为 x86 并出于相同原因使用 SlimDX.dll x86

  • 我还将 slimdx.dll 放入 dxcapture.exe(应用程序名称)所在的同一文件夹中

可能是什么问题?WinXP 是否支持 Directx9 屏幕截图?

编辑:我试图注释掉不同的代码行,似乎“设备创建”是问题。我的意思是这一行:

WinXP 机器集成了 ATI 显卡,所以,我不知道.. 也许这就是问题所在,也许不是,但我无法在其他电脑上检查我的程序。

0 投票
1 回答
869 浏览

directx - 几何着色器在原点接收额外点

我在使用几何着色器时遇到了一个非常奇怪的问题。我制作了一个非常简单的几何着色器,它将一个点转换为一个三角形。

这是着色器:

我向它发送 4 个这样的顶点:

我得到这个输出:

程序的输出,带有奇怪的中间三角形

如您所见,我只向输入汇编器发送了 4 个三角形,输出中输出了 5 个。

关于为什么会发生这种情况的任何想法?恐怕这可能与缓冲区分配的额外内存有关……但我似乎无法弄清楚问题到底出在哪里。

提前致谢!

0 投票
1 回答
1478 浏览

wpf - WPF 和 SlimDX (DirectX 11) 互操作

您好,我已经设法通过使用 D3DImage 和共享纹理将 SlimDX 和 DirectX 11 图形集成到 WPF 应用程序中。但是,在以高分辨率 (2560x1440) 渲染简单场景(例如 SlimDX 示例中的 GameOfLife)时,我的性能确实很差。

我已经尝试对我的渲染方法进行一些性能分析,看起来大部分时间都花在了使后缓冲区无效时锁定 D3DImage 上。

绘制后花费大量时间冲洗设备:

任何人都知道这个问题以及如何优化它?在集成 WPF 和 SlimDX 时,您能期望获得下降性能吗?