8

我想用 WPF 写一个简单的光线追踪器。这是一个学习项目,因此我更喜欢可配置性而不是性能(否则我会选择 C++)。

我仍然想要相对快速的像素绘图。StackOverflow 上的上一个问题包含通过获取 GDI 位图在 WPF 中实现此目的的代码。从我对Windows编程的了解相对较少,

  1. GDI 很慢
  2. DirectX 速度很快
  3. WPF 在下面使用 DirectX(虽然不确定 WPF 的哪些部分)

是否可以通过 WPF Canvas(或类似的)使用 DirectX(不是 GDI)获得像素级访问?

如果可能的话,我还将考虑在 WPF 窗口(以及其他 WPF 控件)中合并 DirectX API 调用的建议。

提前致谢。

4

3 回答 3

5

有趣,但使用光线追踪,将像素写入屏幕将(不应该)是缓慢的部分。不过,您可以WriteableBitmap用于此目的。对于您想要的东西,它肯定足够快。

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap.aspx

(有关信息,我在这个 emu/IDE 中使用它 - http://0x10c-devkit.com/ - 它可以刷新具有出色性能的低分辨率显示。在 github 存储库中有源代码,即 LEM1802 插件。 )

啊,这一点:https ://github.com/kierenj/0x10c-DevKit/blob/master/PluginAPI/NyaElektriska.LEM1802/GPU.cs - 见UpdateDisplay

于 2012-09-25T12:29:09.770 回答
3

另一种解决方案是WriteableBitmapEx。它扩展了内置的 WriteableBitmap。

于 2012-09-25T13:48:30.627 回答
2

有一个名为 Direct Canvas 的开源项目,它是一个硬件加速的 2D 绘图 API,支持矢量图形、多媒体文件、可扩展像素着色器、混合模式等等!

http://directcanvas.codeplex.com/

演示http://www.youtube.com/user/jdollah69#p/u

于 2012-09-25T12:21:50.637 回答