我想用WPF编写一个简单的光线跟踪器。这是一个学习项目,因此我赞成对性能的可配置性(否则我会选择C ++)。
我仍然想要相对较快的像素绘制。 StackOverflow上的previous question包含通过获取GDI位图在WPF中实现此目的的代码。从我对Windows编程的了解相对较少,
是否可以通过WPF Canvas(或类似)使用DirectX(而不是GDI)获得像素级访问?
如果可能的话,我还会考虑在WPF窗口(以及其他WPF控件)中合并DirectX API调用的建议。
提前致谢。
答案 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,支持矢量图形,多媒体文件,可扩展像素着色器,混合模式等等!
答案 2 :(得分:2)
另一个解决方案是WriteableBitmapEx。它扩展了内置的WriteableBitmap。