问题标签 [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 投票
1 回答
1289 浏览

.net - VMR9Allocator (DirectShow .NET + SlimDX)

我试图用 SlimDX 而不是 MDX 转换和运行 DirectShow .NET 的 VMR9Allocator 示例。当它到达这条线时我得到了一个例外

在 Allocator.cs 的 AdviseNotify 方法中。

例外是

不支持这样的接口

, hr 回报是

0x80004002

.

该示例在 MDX 上运行良好,而且我的 SlimDx 也可以正常工作,因为我已经使用它编写了另一个 3d 应用程序,工作正常。

我似乎无法找出问题所在,谷歌搜索也没有帮助。显然没有多少人使用这种组合,而且我能找到的也不是真正遇到这个问题。

注意:两周前我在 gamedev.net 上问过同样的问题,到目前为止还没有答案。

0 投票
2 回答
5190 浏览

c# - Direct3D 中的高效线条绘制(Transformation2D?)

背景:我正在使用 DirectX 的 SlimDX C# 包装器,并且正在使用 Sprite 类(传统上来自底层 dll 中的 Direct3DX 扩展)绘制许多 2D 精灵。我一次在屏幕上绘制了数百个精灵,性能非常棒——在我的四核上,它在我的整个游戏中使用了大约 3-6% 的处理器,包括 10,000 多个对象的逻辑,ai第二个线程上的例程等。所以很明显,精灵正在使用全硬件加速进行绘制,一切都应该是这样。

问题:当我开始引入对 Line 类的调用时,问题就出现了。一旦我画了 4 条线(用于拖动选择框),处理器使用率就会飙升至 13-19%。这只有四行!

我尝试过的事情:

  1. 关闭和打开线抗锯齿。
  2. 关闭和打开 GLLines。
  3. 围绕我的绘图调用手动调用 line.begin 和 line.end。
  4. 省略对 line.begin 和 line.end 的所有调用。
  5. 确保我对 line.draw 的调用不在 sprite.begin / sprite.end 块内。
  6. 在 sprite.begin / sprite.end 块内调用 line.draw。
  7. 渲染 4 行,或渲染 300。
  8. 关闭所有精灵和文本渲染,只保留 4 行的线渲染(看看这是否是某种模式更改问题)。
  9. 以上的大多数组合。

一般来说,这些都不会对性能产生重大影响。#3 将处理器使用率降低了大约 2%,但即便如此,它仍然比应有的水平高出 8% 或更多。最奇怪的是,上面的#7 对性能的影响绝对为零——4 行和 300 行一样慢。我唯一能想到的是,由于某种原因,这是在软件中运行的,和/或它导致图形卡在某种绘图模式之间不断来回切换。

矩阵法:

如果有人知道上述问题的任何解决方法,那么我很想听听!

但是我假设这可能只是directx内部的一个问题,所以我一直在追求另一条路线——制作我自己的基于精灵的线。本质上,我有一个 1px 的白色图像,我使用漫反射颜色和变换来绘制线条。这在性能方面很有效——画出 300 条这样的“线”使我处于我在四核上寻找的 3-6% 的处理器利用率性能范围内。

我的像素拉伸线技术有两个问题,我希望对变换更了解的人可以帮助我。这是我当前的水平线代码:

这是可行的,因为它在屏幕上大部分正确的位置绘制了大部分正确大小的线条。然而,事情似乎向右移动,这很奇怪。我不太确定我的矩阵方法是否正确:我只想将 1x1 精灵水平缩放一些像素,垂直缩放不同的像素。然后我需要能够定位它们——在中心点很好,我认为这就是我必须做的,但如果我能把它定位在左上角那就更好了。这似乎是一个简单的问题,但我对矩阵的了解很薄弱。

这将使纯水平线和纯垂直线对我有用,这是战斗的大部分内容。我可以忍受这一点,并在我目前使用斜线的位置使用其他类型的图形。但是,如果我有一种方法可以使用这种拉伸像素方法绘制有角度的线条,那就太好了。换句话说,例如,从 1,1 到 7,19 画一条线。使用矩阵旋转等,这似乎是可行的,但除了猜测和检查之外,我什至不知道从哪里开始,这将花费很长时间。

非常感谢任何和所有帮助!

0 投票
4 回答
34893 浏览

c# - 如何在 C# 中一次旋转、缩放和平移矩阵?

好的,这应该是一个简单的矩阵问题,但是我对矩阵的理解有些有限。这是场景:我有一个 1px x 1px 的精灵,我想按一定量 x 和 y 缩放(每边不同的量),然后我想将该精灵旋转某个角度,然后我希望能够精确定位整个事物(从左上角或中心,对我来说没有区别)。

到目前为止,我的代码模糊地接近,但根据我传入的角度,它往往会偏离一些随机量。

我认为这样做可以:

但它往往会缩小旋转线的比例,即使我认为它的定位是正确的。

我也试过这个:

这条线看起来完全正确,大小和形状都完全正确,但我根本无法正确定位它。如果我在上述调用结束时使用平移向量,或者如果我使用 Sprite.Draw 设置位置,则两者都无法正常工作。

这一切都在 SlimDX 中。我究竟做错了什么?

0 投票
2 回答
8184 浏览

c# - 使用 SlimDX 绘制 2D

您好,我无法使用 SlimDX 正确渲染精灵。它像 .NET 绘图 DrawImageUnscaled 一样绘制了一些缩放。我没有使用任何转换。

在里面:

渲染:

编辑:如果您不知道如何想象错误的渲染,这里是我渲染和参考的内容(忽略那个白色,它只是透明的 PNG)。注意第一张图像是如何 缩放

0 投票
3 回答
2431 浏览

directx - SlimDX (DirectX10) - 如何更改纹理中的纹素?

我尝试更改已加载的纹理的纹素。

我的假设是使用 Texture2D::Map 和 UnMap 函数,但是当我更改给定 DataRectangle 的数据时没有任何变化。

我需要一个简单的例子,比如创建一个 128x128 的纹理,每边都有从黑色到白色的渐变。

谢谢

ps:Direct3D 10 C++ 示例也可能有所帮助,SlimDX 只是一个包装器,具有几乎完整的相同功能。

0 投票
3 回答
5777 浏览

wpf - 使用 DX10 的 D3DImage

是否可以将 DirectX 10(我正在使用 SlimDX)与 WPF 的 D3DImage 一起使用?我能找到的唯一示例和文档仅显示使用 DX9 表面。

0 投票
1 回答
3017 浏览

c# - 使用 SlimDX 从麦克风捕获音频输入

VS 2008 SlimDX 2009 年 3 月

我正在使用 SlimDX 捕获输入音频并将其显示在进度条中。我有一个后台工作者,它将在后台线程中进行捕获并更新进度条。

但是,我遇到了一个问题,即使用什么值作为更新进度条的值。

一切正常,捕获开始。但是,当我尝试更新进度条时,应用程序将失败。

编辑 ==== 我在 DoWork 中编辑了我的代码。这次使用 Int16 给出一个整数。但是,我现在面临的问题是缓冲区会溢出。无论如何,它在那里创建一个循环缓冲区,一旦它到达终点,它会重新开始吗?

有什么建议么?

非常感谢,

0 投票
2 回答
2155 浏览

c# - SlimDX Directx 9 问题

当我尝试初始化directx时出现以下问题

SlimDX.Direct3D9.Direct3D9NotFoundException is unhandled Message="Direct3D 9 was not found. 重新安装 DirectX 可能会解决问题

代码:

我通过 dxdiag 实用程序检查了 PC 上安装的 Directx 版本,它显示我安装了 Directx 9c。

问题的原因是什么。

阿卜杜勒哈利克

0 投票
2 回答
2733 浏览

c# - SlimDX 中的 2D 三角形

给定三角形顶点以像素坐标给出的情况下,如何使用 SlimDX 的 Direct2D 接口绘制三角形?

0 投票
1 回答
2786 浏览

visual-studio - SlimDX 装配参考

我已经安装了 SlimDX,但在 Visual Studio 中没有选择程序集参考,而且我终生无法找到 SlimDX 的安装位置!任何帮助将不胜感激!

感谢,

米奇