所以我有一个托管的c ++包装器,用于我的本机c ++代码,如下所示:
namespace AmbitCLRWrapper {
public ref class Render
{
AmbitRender::Render* nativeClass;
public:
Render()
{
nativeClass = new AmbitRender::Render();
}
~Render()
{
this->!Render();
}
!Render()
{
delete nativeClass;
}
void getD3DSurface(IDirect3DSurface9** surface)
{
nativeClass->getD3DSurface(surface);
}
void** getD3DSurfaceR()
{
IDirect3DSurface9** surface;
nativeClass->getD3DSurface(surface);
return (void**)surface;
}
};
}
我可以将dll导入c#就好了,创建一个没有问题的渲染: AmbitCLRWrapper.Render渲染=新的AmbitCLRWrapper.Render();
但是我无法弄清楚如何使用我的底部两种方法中的任何一种,或者即使它们是正确的方法 - 但我正在尝试使用http://msdn.microsoft.com/en-us/library/cc656716(v=vs.110).aspx作为模板(但我做)想要一个包装器,而不仅仅是从非托管传递到c#
任何人都知道如何正确地做到这一点?
IntPtr pSurface = render.getD3DSurfaceR(); // this line does not compile
需要像这样消费:
d3dimg.SetBackBuffer(D3DResourceType.IDirect3DSurface9, pSurface);