我想要做的是CUDA加速分形发生器。我想使用c#来创建ui,但分形图像是由在dll中编译的非托管cuda c生成的。在一些教程之后,我设法使用简单的数据进行互操作,但是我很难创建位图图像并将其传递回c#应用程序。
我可以使用CUDA成功地将dll中的缓冲区与像素数据组合在一起,但是如何使用指向该缓冲区的指针在c sharp应用程序中创建位图?
答案 0 :(得分:0)
有一些方法可以做到这一点:
如果您的原生函数如下:
void foo(void *bitmap);
您可以使用P / Invoke声明:
[DllImport(...)]
public static unsafe void foo(void *bitmap);
然后按如下方式使用它:
unsafe
{
byte[] buffer = new byte[...];
fixed (void *pBuffer = buffer)
{
foo(pBuffer);
}
}
请注意,您应该允许不安全的代码(在项目设置中,“构建”选项卡)。