标签: directx

如何产生精确定时的音调和沉默?

我有一个C#项目,为RSS提要播放摩尔斯电码.我使用Managed DirectX编写它,却发现Managed DirectX已经过时并且已弃用.我的任务是播放纯正的正弦波突发,其间穿插着静音期(代码),它们的持续时间精确定时.我需要能够调用一个播放纯音多少毫秒的函数,然后Thread.Sleep()然后播放另一个等等.最快,音调和空格可以短至40ms.

它在Managed DirectX中运行良好.为了获得精确定时的音调,我创造了1秒.将正弦波放入辅助缓冲器,然后播放一定持续时间的音调,我在缓冲结束的x毫秒内向前寻找然后播放.

我试过System.Media.SoundPlayer.这是一个失败者[编辑 - 请参阅下面的答案]因为你必须播放(),睡眠(),然后停止()任意音长.结果是音调太长,因CPU负载而异.实际停止音调需要不确定的时间.

然后,我踏上了漫长的尝试使用n音讯1.3.我最终得到了一个提供音调数据的内存驻留流,并再次向前搜索,留下流中剩余的所需音调长度,然后播放.这在DirectSoundOut类上工作了一段时间(见下文),但WaveOut类很快就死了,内部断言说尽管PlayerStopped = true,缓冲区仍在队列中.这是奇怪的,因为我玩到最后然后在音调结束和下一个开始之间等待相同的持续时间.您认为在开始播放40毫秒音调后80毫秒,队列中没有缓冲区.

DirectSoundOut运行良好一段时间,但它的问题是,对于每个音调突发Play()它旋转一个单独的线程.最终(5分钟左右)它就停止工作了.在VS2008 IDE中运行项目时,可以在"输出"窗口中退出线程后查看线程之后的线程.我不会在播放期间创建新对象,我只是Seek()音色流然后反复调用Play(),所以我认为这不是孤立缓冲区的问题/无论是什么堆积直到它被阻塞.

我对这一个没有耐心,所以我希望这里有人遇到类似的要求,并且可以引导我朝着一个可能的解决方案的方向前进.

.net c# directx audio directsound

22
推荐指数
1
解决办法
1826
查看次数

我在哪里可以学习DirectX编程?

我想在C++编程中学习DirectX.我决定学习DirectX,所以我在网上找到了一些教程,但它们都很复杂,很难理解.我在教程上花了3天时间,我已经阅读了所有内容,但我仍然无法创建初始化DirectX的程序.我认为这很难学习.

任何人都可以推荐一本好的教程/书吗?

c++ directx

22
推荐指数
2
解决办法
4万
查看次数

Node.js在屏幕上绘图

我一直在网上寻找这个.我想知道是否有任何Node.js包/ bindigs /库允许你创建一个在没有node-webkit(NW.js)/ Electron或基于浏览器的其他实现的情况下在屏幕上绘制的应用程序.也许某些东西与opengl结合,支持2D图形?

如果您知道某些名称或链接,请告诉我.如果不是,我可能不得不自己写点东西.

感谢你们.

javascript opengl directx graphics node.js

20
推荐指数
1
解决办法
8045
查看次数

DirectX桌面

我想使用DirectX为Windows 7制作动画桌面背景.我正在使用C#,SlimDX和一些P/Invoke导入的Windows API函数.我对原生Windows编程并不擅长,但我在网上找到了一些东西,我相信我需要做的是:

1)找到包含dekstop壁纸的窗口的句柄,将其连接到DirectX设备并绘制到其中.

2)创建一个新的输出窗口,并将其插入桌面壁纸上方但在桌面图标下方.

我试过这两个,但似乎都没有用.如果我从GetDesktopWindow()返回的句柄开始导航Window heirarchy,我可以去桌面 - > WorkerW - > SHELLDLL_DefView - > SysListView32.如果我将DirectX设备连接到此句柄,我可以绘制整个桌面,但它也包含图标.如果我创建一个Windows窗体,使用SetParent()将其父窗口设置为SHELLDLL_DefView,然后使用SetWindowPos来播放其Z顺序,我只能将它放在桌面壁纸后面或桌面+图标前面.

看起来桌面壁纸是包含图标的文件夹视图的背景,因此我想要做的事情无法工作.然后唯一的解决方案是不使用桌面图标,或找到一些替代方案,例如覆盖桌面,然后覆盖包含某个文件夹内容视图的透明窗口.

有没有人知道我应该做什么,甚至不知道我想做什么是可能的?看起来你可以使用GDI绘制到桌面背景(我相信wxSnow程序会这样做),我看到的东西类似于我想要的VLC Media Player在Windows XP下使用DirectX壁纸模式(有趣的是,我似乎无法在我的系统上启用此选项).

谢谢!

c# windows directx

19
推荐指数
2
解决办法
6026
查看次数

为什么DirectX/DirectWrite/Direct2D文本渲染不能像GDI一样锐利?

我已经知道,与GDI相比,子像素定位会导致DirectWrite文本呈现模糊.

但是,我的问题更为基础:为什么 DirectWrite(和相关方法)不能像GDI一样呈现文本?

换句话说:
什么阻止 DirectWrite能够将文本捕捉到最近的像素,就像GDI一样?

例如,它是硬件问题吗?驱动程序架构问题?它根本没有实现吗?或者是其他东西?


较小的样本:

较大的样品:

Direct2D,别名:

Direct2D,默认:

Direct2D("经典GDI"):

Direct2D("天然GDI"):

实际 GDI:

directx winapi gdi text-rendering smoothing

19
推荐指数
1
解决办法
5938
查看次数

Catmull-Rom样条 - 它们如何工作?

从这个似乎有关于catmull-rom splines的最详细信息的网站:http://www.mvps.org/directx/articles/catmull/ 它提到需要四个点来创建样条曲线.然而,它没有提到点p0和p3如何影响p1和p2之间的值.

我的另一个问题是如何创建连续样条线?通过使p4 = p2(假设我们有p0,p1,p2,p3,p4,p5,p6 ...... pN),将点p1,p2定义为与p4,p5连续是否容易.

一个更普遍的问题是如何计算catmull rom样条上的切线?它是否必须涉及在样条上取两个点(比如0.01,0.011)并根据毕达哥拉斯得到切线给定输入值给出的位置坐标?

c++ opengl directx graphics spline

17
推荐指数
2
解决办法
4万
查看次数

如何在C#中绘制简单的图形?

我只想在C#中绘制简单的2D对象,如圆形,直线,方形等.我怎么做?回到Turbo C++时代,我记得初始化一些图形库是为了做同样的事情.我需要在.NET中做类似的事情吗?3D物体有什么不同吗?像DirectX这样的东西会让这更容易吗?任何指向教程或样本的链接都非常感谢.

.net c# directx graphics 2d

17
推荐指数
2
解决办法
6万
查看次数

我在哪里可以找到一些深入的DirectX 11教程?

到目前为止,我能找到的唯一教程是在directx11tutorials.com上,这些教程基本上是从现有的样本中推断出来的.有谁知道在哪里可以找到其他教程,或者更好的使用DirectX 11的开源项目?(使用DirectX 11的项目代码的额外点:))

c++ directx directx-11 directcompute

17
推荐指数
4
解决办法
2万
查看次数

为什么没有适用于Linux的DirectX API?

考虑到Windows系统上用于现代视频卡的DirectX API的驱动程序端实现,我想知道为什么这种实现在非Windows系统上是不可用的,最明显的是linux.

由于显然没有这个功能,我只能假设有一个很好的理由让我无视,但在我的原始理解中,我只是看到DirectX调用只不过是硬件设备上的函数入口点.而对于记录,我并不是指兼容层(最值得注意的是WINE,我每天都惊讶的项目),而是一个直接硬件调用的库.

是否可以创建directx的开源版本?它有可能但是非常困难吗?

linux directx drivers

17
推荐指数
2
解决办法
2万
查看次数

用于.NET的3D图形库

我想学习为Windows 7 /桌面制作简单的3D应用程序.就此而言,我指的是在3D空间中移动的球体,三角形或像素.它还不一定非常复杂.为此,我想在.NET中使用C#语言(Java/C++是我的第二优先).

我知道这已经多次被问到互联网,但我觉得很多问题已经过时,许多API已被弃用,教程太旧了.

我正在考虑学习XNA,但后来我了解到微软不再计划开发和支持它了.SharpDX似乎也是一个很好的方法,但这似乎是针对Windows Store和Phone应用程序.

在互联网上查看时,Managed DirectX似乎正是我所寻找的(语法,复杂性),但同样,我也不赞成使用它.

你能指导一下我应该学到什么来创建简单而坚固的3D应用程序吗?

c# directx 3d graphics

17
推荐指数
3
解决办法
4万
查看次数