WP8EnableTextureDrawing

WP8EnableTextureDrawing

我正在使用c ++和Directx开发带有Unity3d的winphone 8插件。
我现在陷入困境,因为我不知道如何将IntPtr类型从我的C#代码传递到我的C ++代码。对于Android或iOS插件,实际上要容易得多,因为我们可以将数据作为void *取回。
但是,在Windows Phone运行时组件项目中是不可能的。从我的阅读中,我必须使用winRT类型。我已经搜寻了

这是我的代码示例:

在C#中:

public delegate void WP8EnableTextureDrawing(System.IntPtr texture);
private WP8EnableTextureDrawing wp8EnableTextureDrawing;

public void SetWP8TextureDrawingFunc(WP8EnableTextureDrawing func){

    wp8EnableTextureDrawing = func;
}

//...

wp8EnableTextureDrawing(targetTexture.GetNativeTexturePtr());


在c ++头文件中,我通过以下方式匹配委托:

static void enableTextureDrawing(Platform::Object ^texturePtr);


但是编译器会抛出此错误->
'WP8TextureDrawing.TextureDrawing.enableTextureDra wing(object)'没有重载匹配委托'NativeTextureDrawer.WP8EnableTextureDrawing'

我希望已经有机会的人能帮助我。

谢谢

最佳答案

System.IntPtr不是Platform :: Object ^。
您应该从IntPtr使用ToInt64()或ToInt32()
获取内存地址并将其发送到本机代码。

07-28 03:18