WPF中的快速像素绘制

时间:2012-09-25 12:02:49

标签: c# wpf raytracing

我想用WPF编写一个简单的光线跟踪器。这是一个学习项目,因此我赞成对性能的可配置性(否则我会选择C ++)。

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

  1. GDI很慢
  2. DirectX很快
  3. WPF下面使用DirectX(不知道WPF的哪些部分)
  4. 是否可以通过WPF Canvas(或类似)使用DirectX(而不是GDI)获得像素级访问?

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

    提前致谢。

3 个答案:

答案 0 :(得分:5)

有趣,但是通过光线追踪,将像素写入屏幕将(应该)不是慢速部分。但是,您可以使用WriteableBitmap。对于你想要的东西来说,它当然足够快。

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

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

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

答案 1 :(得分:2)

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

http://directcanvas.codeplex.com/

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

答案 2 :(得分:2)

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