问题标签 [managed-directx]

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

c# - 我应该如何将我的托管 DirectX 程序迁移到 Windows 7?

最近我买了一台装有 Windows 7 的新电脑并安装了 C# 2010 Express。我在我的 Vista 机器上用 C# 2008 Express 编写了很多软件。当我尝试将托管 D3D 应用程序迁移到 2010 时,它们都在运行时崩溃,并出现错误“不是有效的 Win32 应用程序”。经过一些故障排除后,我了解到这是因为 MS 不再支持托管 DirectX。多么拖沓。所以看起来我必须重写大量代码才能使用以下替代方法之一:

*XNA
*Direct3D 10/11 API(就像你在 VC++ 中使用的那样)
*OpenGL
*其他一些选项,比如 SlimDX

我正在寻找一种解决方案:
*向后兼容(即,Vista 和 XP)
*向前兼容(我不想学习一个新系统就不得不放弃它并在一年内学习另一个)
* OO 友好——我有数千行代码要重写。我编写非托管代码没有问题,但类似的 OO 解决方案可能会减少移植时间。

我不能成为第一个遇到这个问题的人。其他人找到了哪些解决方案?

0 投票
3 回答
2078 浏览

directx - 将托管 DirectX 与 .Net Framework 4.0 一起使用时程序崩溃

我们在将 DirectSound 与托管 DirectX dll 和 .Net Framework 4.0 一起使用时遇到问题

该程序在 .Net Framework 2.0 上运行良好 - 但我们需要升级到 4.0 才能使用其他一些组件。

当程序调用 Sound 模块时,它会崩溃并出现以下异常。

有人看过这个并知道如何修复它吗?

0 投票
2 回答
1820 浏览

c# - C# 的 3D 图形框架

我有一个用于可视化地图数据的应用程序。直到今天,我一直在使用标准 Forms.Graphics 在我的 Windows 应用程序中绘制 2D 线条和其他图元。

我今天发现托管 C# DirectX 已被弃用。如果我想在我的应用程序中使用 2D/3D,作为 C# 开发人员,我有什么选择吗?(这不是游戏,所以我不会迁移到 C++)。我不需要任何先进的东西。我所需要的只是能够在 2D 和 3D 中绘制线条和面,并在 2D 和 3D 中用鼠标选择对象。

0 投票
0 回答
189 浏览

sprite - 托管 DirectX 缩小精灵

我不知道如何缩小(缩小)我的精灵。

我使用了 2 个函数:sprite.draw2dsprite.draw。当我使用第一个时,我指定参数“目标大小”,当我使用第二个时,我将转换应用于精灵,例如“affineTransformation2D”。

一切顺利,直到宽度和高度小于1(原始大小)。如果 size 为 (0.5, 0.5),则仅绘制纹理的左上角四分之一。例如,如果 size 为 (0.7, 0.8),则 MDX 会绘制 2 个相同的纹理,它们具有不同的大小并且彼此半透明。

为什么会这样?也许还有其他方法可以使精灵更小?

0 投票
2 回答
774 浏览

c# - 从 DirectX 切换到 SlimDX 的基础是什么?

我有一个使用 DirectX 播放视频的旧应用程序,我想对其进行更新并防止加载程序锁定的“错误”等。

请问转换申请的基本步骤是什么?我需要特别注意什么?

目前,我在项目中有指向我已添加到本地文件夹的本地 DLL 文件的引用。这不是一个好方法,也是这个问题的另一个原因。

0 投票
1 回答
271 浏览

.net - 在托管 DirectX 中旋转

我有一个四边形,我想(1)围绕 Y 轴旋转一个四边形,(2)围绕四边形的 X 轴旋转它。问题是它一个接一个地旋转,所以它围绕 Y 轴旋转,然后围绕世界的X 轴旋转,而不是四边形的X 轴。

基本上我想要做的是围绕它的 X 和 Y 轴旋转四边形(随机),最后我仍然希望它的 2 个底部顶点具有 Y = 0。

这是我现在正在使用的代码:

0 投票
1 回答
44 浏览

c# - 2 Mesh.Box 相互之间

我将 directx 与 C# (MDX) 一起使用。我的任务就是将两个盒子(用 Mesh.Box 创建)放在一起。

顶盒有:

宽度:200 高度:10 深度:1

底盒有:

宽度:10 高度:100 深度:1

两者一起应该看起来像

现在我有一个问题,我不知道如何为两者计算正确的翻译:

顶盒:

底盒:

现在底盒不直接在顶盒之间。

我认为我必须计算 Z 但我不知道我是如何做到的。有人能帮我吗?

0 投票
2 回答
181 浏览

c# - (计算机图形)平移和旋转世界矩阵后获取鼠标坐标

嗨,在我平移和旋转世界矩阵后,有什么方法可以在 direct3d 中获取鼠标的 X、Y、Z 吗?

0 投票
1 回答
2090 浏览

c# - 如何从 Windows 8.1 上的 Visual Studio 2013 C# 解决方案开始使用 DirectInput?

在对我的一个问题发表评论之后,我正在尝试开始使用 DirectInput。

我完全不熟悉它,我根本不知道如何开始。命名空间似乎是 Microsoft.DirectX.DirectInput 但我似乎无法在我的参考文献中找到它。它在几个地方说您只需从我的项目中的引用中添加它,但我找不到它。我检查了 DirectX SDK,但它现在似乎是 Windows SDK 的一部分,并且 Windows SDK 已经随 Windows 8 一起安装,所以我不应该做任何事情吗?

我找到了几个替代方案,其中 SharpDX 听起来不错。我也无法从这个开始......我已经安装了 SharpDx.Input nuGet 包,但我似乎无法使用在其他地方可以找到的代码,比如这里new DirectInput()例如,Visual Studio 根本无法识别。

0 投票
2 回答
3622 浏览

c# - 托管 DirectX / SharpDX / SlimDX 在没有安装程序的情况下工作?

我正在尝试编写一个 C# 应用程序,它应该:

  • 在 .NET Framework 上运行(理想情况下为 4.0)
  • 在尽可能多的计算机上运行 DirectX 9(每个安装了 DirectX 9 的人)
  • 是单个 EXE 文件(没有 DLL)
  • 不要强迫最终用户安装任何东西(尤其是下载)

我尝试过托管 DirectX、SharpDX,但没有成功。(我不在乎它们是否过时,我不需要 DirectX 的太多东西,只需要基础知识,它是相对简单的应用程序)。为了隐藏 DLL,我将它们嵌入到资源中并按AppDomain.AssemblyResolve事件加载它们。

这是我的问题:

托管 DirectX。通常适用于大多数但不是所有的计算机。尽管安装了 3D 游戏(在 DirectX 上安装和运行,至少有 9 个),但有一种情况它无法正常工作。MS Managed DirectX 只是没有与 DirectX 一起安装。有谁知道为什么?为什么有些人有,有些人没有?当我将所需的 DLL 添加到应用程序的文件夹中时,它工作正常,但是当我将它们作为资源嵌入时,它们无法加载(即使我已将它们提取到临时文件夹并尝试从那里加载)。我知道如何解决这个问题,这可能可行,但我的问题是:我的托管 DirectX DLL 可以在每个 CPU 上运行吗?(32/64 位?)。我以前遇到过这种类型的问题。

夏普DX。不适用于大多数计算机,即使是现代计算机。它需要安装特定版本的 DirectX Runtime(2010 年 6 月)!如果不是,它会抛出关于丢失 d3dx9_43.dll的异常. 每个人都有 d3dx9.dll,但几乎没有 d3dx9_43.dll。安装特定版本是他们针对这个问题的官方解决方案......我不知道他们在想什么,但它就是不可用。从资源中加载它们也存在问题,但我已经设法解决了这个问题。当我从我的 32 位系统嵌入 d3dx9_43.dll 时,它在 64 位系统上抛出了 BadImageFormatException,所以我什至不能将该文件放在应用程序旁边,更不用说嵌入它或安装到它所在的 SYSTEM32 目录应该是(这将需要完全信任)。还有一个问题。即使我想附加 DirectX 2010 年 6 月最终用户运行时,它也需要 95MB,这太多了(更不用说要求用户下载它了......)。哦,我也可以

瘦身DX。甚至没有尝试过,因为在其官方主页上说它需要在最终用户计算机上安装“SlimDX Runtime”。正如我在开头所说的那样,该应用程序应该可以正常工作,而不是强迫用户安装任何东西(DirectX 本身除外,它已经安装在大多数甚至旧计算机上)。

有什么建议么?请不要再给我风滚草奖了...... :] 除了进入非托管代码和编写我自己的包装器之外,我对一切都持开放态度。