问题标签 [sharpdx]

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

c# - 如何在 C# WPF 项目中使用 SharpDX DirectSound 播放 .wav 文件?

我希望能够精确控制在我的程序中播放的 .wav 文件的时间。我还希望能够同时播放多个 .wav 文件。SoundPlayer 不够好,因为我不能同时播放两个声音,即使我连续播放不同的声音,每个声音之间也有大约 1/8 秒的延迟,这对于我正在做的事情来说是不可接受的。我找不到使用 SharpDX 添加设备的方法。

0 投票
1 回答
3011 浏览

wpf - 具有 D3DImage 共享资源的 DirectX11/DirectX10 的多重采样 (MSAA)

我正在尝试使用 D3DImage 在 DX11 中获取 MSAA,但似乎不可能,因为不允许共享多重采样纹理,如此处所述:http: //msdn.microsoft.com/en-us/library/windows/桌面/ff476531(v=vs.85).aspx

实际上,我使用的是 D3DImage 的 SharpDX 实现,它适用于 DX11 和 DX10,只要可以在没有抗锯齿的情况下离开。

此线程中描述了解决它的方法:http ://sharpdx.org/forum/5-api-usage/1000-d3d11-problem-with-usage-of-texture2d不成功。还有另一个线程问类似的问题:Multisampling and Direct3D10 / D3DImage interop

最后,问题实际上是,如果有人可以确认,绝对不可能使用 D3DImage 来渲染来自 DX10/DX11 的抗锯齿内容吗?

0 投票
1 回答
3686 浏览

c# - SharpDX:从 DataStream 初始化 Texture2D 失败(尽管 Texture1D 工作正常)

我正在尝试从内存数据创建一个 SharpDX.Direct3D11.Texture2D,但总是得到一个 SharpDXException(HRESULT:0x80070057,“参数不正确。”)。为此,我使用了 Texture1D,之前可以毫无问题地创建它。

我已将代码简化为仍然产生异常的示例:

在不传递数据的情况下创建纹理可以正常工作。有人可以告诉我如何修复 Texture2D 初始化吗?

0 投票
0 回答
128 浏览

image-processing - How to apply video processing on the GPU

I have a issue in programming for the graphics Card. I write a shader for Image processing (I use DirectX 11 in combination with SharpDX), but the Transfer from the CPU to the GPU is really slow (sometime about 0.5 seconds), but I think there should be a faster way than using Texture2D.FromStream, because when playing a video, also every image of the Video has to be transfered to the GPU (or am I wrong at this Point?). How can I Speed up this process?

0 投票
0 回答
311 浏览

c# - 编译像素着色器时出错

我正在尝试编译要在 SharpDX 中使用的像素着色器 - 更具体地说,作为效果(应用于图像)。

我正在使用他们的 tkfxc 编译器编译它。

着色器代码是:

当我尝试编译它时,我收到以下错误:在此处输入图像描述

以前有人遇到过这个错误吗?我完全不知道如何解决它。

0 投票
1 回答
1081 浏览

xaml - 使用 SharpDX 在 WinRT 中将图像生成为字节 []

我正在尝试生成一个简单的图像并将其显示在 WinRT/XAML 中。为此,我想要使用 SharpDX 绘制的图像的字节 []。到目前为止,我的方法似乎很好,但结果缓冲区是空的。

我也尝试了 CopyPixels,但它也只产生零。

有人可以指出我正确的方向吗?


0 投票
3 回答
2591 浏览

c# - DirectX / SharpDX中的“glReadPixels”等功能

我正在寻找一种在鼠标点读取像素颜色的方法。在 OpenGL 中,它是通过在绘制场景(或部分场景)后调用函数“glReadPixels”来完成的。我想在背景中做一个简单的颜色选择例程,用于识别 3D 空间中的形状/线条。

那么,在 SharpDX (DirectX10 / DirectX11) 中是否有任何等效的方法/功能/建议可以做同样的事情?

0 投票
2 回答
3430 浏览

c# - SharpDX 和 D3DImage 的性能问题

我有一个控件,它使用 D3DImage 来托管 SharpDX DirectX9 表面,并允许用于平移、缩放和与世界对象交互,结果非常棒。性能实际上是惊人的一致 60fps,除非窗口被最小化并重新打开,或者用户锁定然后解锁屏幕。当窗口重新获得焦点时,fps 下降到大约 25-30fps。我可以通过将控件卸载并加载回其容器然后 BOOM,60fps 来“修复”该问题。

我使用设置为 10 毫秒的 DispatcherTimer 调用主渲染函数。之前,我使用的是 CompositionTarget.Rendering 事件,但性能不如使用 DispatcherTimer。我相当确定我正在正确处理丢失的资源。关于这些每秒丢失的帧有什么想法吗?

编辑: 我有同样的问题。不幸的是,进行自动设备重置并不能解决问题,但如果我有一个执行相同重置方法的按钮,那么我的 fps 会恢复正常。

0 投票
1 回答
787 浏览

c# - 从 C++ 到 C# 的困难编组 DirectX 结构数组

目标:将 C++(指向?)的结构数组元帅到 C#。

C++: 创建顶点声明()

C#:

我用来定义D3DVERTEXELEMENT9结构。SharpDX 是直接从 DirectX SDK C++ 标头生成的托管 DirectX 库,因此它应该与 COM 互操作非常兼容。实际上,我已经有 10 个其他钩子完美地工作,但这是第一个带有指向结构数组的指针。

以防 SharpDX 的结构定义不起作用,我也尝试用我自己的定义替换它:

我尝试了以下 C# 方法签名:

注意:IntPtr devicePointer作为第一个参数应该不是问题。我有其他 10 个可以成功工作的钩子。

注意:这些是 Direct3D API 挂钩。因此,我的程序正在传递我需要从非托管 C++ 环境编组到托管 C# 环境的数据。

1:

CreateVertexDeclaration(IntPtr devicePointer, D3DVERTEXELEMENT9[] vertexElements, out IntPtr vertexDeclaration)

结果:数组只有一个元素,但它的值是默认值(没有意义)。这意味着 , short Stream, short Offset, Type, Method,UsageUsageIndex都是 0(枚举取它们的第一个值)。

2:

CreateVertexDeclaration(IntPtr devicePointer, ref D3DVERTEXELEMENT9[] vertexElements, out IntPtr vertexDeclaration)

结果:数组本身为空。

3:

CreateVertexDeclaration(IntPtr devicePointer, [In, Out] D3DVERTEXELEMENT9[] vertexElements, out IntPtr vertexDeclaration)

同 1。没有好处。

4:

CreateVertexDeclaration(IntPtr devicePointer, D3DVERTEXELEMENT9 vertexElements, out IntPtr vertexDeclaration)

与 1 相同,不会改变任何内容。我得到一个默认结构。如果我打电话也是一样new D3DVERTEXELEMENT9()

5:

CreateVertexDeclaration(IntPtr devicePointer, ref D3DVERTEXELEMENT9 vertexElements, out IntPtr vertexDeclaration)

我忘记了结果,但它没有工作。我认为它实际上使钩子崩溃了。

6:

CreateVertexDeclaration(IntPtr devicePointer, IntPtr vertexElements, out IntPtr vertexDeclaration)

我认为这 #6 或 #1/#2 应该是正确的。我可能搞砸了这种方法的实现?

我尝试使用此代码:

但它不起作用!它与#1 相同。我的编组指针结构是一个默认结构,就像我调用new D3DVERTEXELEMENT9().

7:

CreateVertexDeclaration(IntPtr devicePointer, ref IntPtr vertexElements, out IntPtr vertexDeclaration)

空或零;无效。


对于方法 #6(使用 IntPtr),我尝试在 Visual Studio 中查看内存区域。接下来的 50 个字节左右都是零。50 个零的字段中可能有一个2字节。但从提供给该方法的 IntPtr 开始,几乎是 49 个字节的零。

这不是问题吗?这是否意味着提供的指针已经不正确?所以我认为这意味着我有错误的方法签名。问题是我一直在尝试各种可能的组合,它们要么使程序崩溃,要么给我一个默认数组,就像我调用new D3DVERTEXELEMENT9().

pVertexElements问题:将结构数组从 C++正确编组到 C# 的解决方案是什么,为什么我当前的签名不正确?

附加说明:在 C++ 中,此特定数组的长度通过后缀 D3DDECL_END来定义。我不知道如果没有某种传递的长度参数,我应该如何在 C# 中获取相应的数组长度。


其他工作挂钩:

C++:

...

C#:

注意:我为所有这些代表使用 SharpDX 枚举和结构,它们工作正常。它们也都以IntPtr devicePointer.

其他钩子传递参数的日志:

与此最相似的方法签名CreateVertexDeclaration()似乎是Clear(). 这是我的实现Clear()

0 投票
0 回答
142 浏览

c# - 相机作为背景

尝试在应用程序中使用笔记本网络摄像头预览时遇到了几个问题。

我正在努力将相机用作 Xaml 中 3D 模型的背景。

让我这么说吧: - XAML 是顶层,它包含所有必要的控件,如按钮、文本等;- DirectX 是呈现 Xaml 背后的所有内容的层

您可以使用 Xaml 和 .NET 显示来自相机的预览。不幸的是,预览显示在 DirectX 层的顶部,覆盖了所有 3D 对象(这是意外行为)。

我试图找到的是解决该问题的方法。

有一种方法可以使用 SurfaceImageSource 制作 Xaml-DirectX-Xaml 层顺序,但需要大量的工作和底层编程。

希望您能帮助我找到该特定问题的解决方案。