在固定表达式

时间:2015-08-18 08:44:09

标签: c# pointers unsafe reflector

我对C#的不安全方面有点新意,所以请原谅我,如果我在这里遗漏了一些明显的东西。

我正在查看使用.NET Reflector的一些代码,以了解Oculus Rift实现到C#的一些实现,但是我遇到了一堆错误,例如:

  

错误CS0030无法将类型'OVR.ViewScaleDesc'转换为'OVR.ViewScaleDesc *'

     

错误CS0030无法将类型'OVR.LayerHeader'转换为'OVR.LayerHeader *'

以下方法

public unsafe Result SubmitFrame(
        uint frameIndex, ref ViewScaleDesc viewScaleDesc, ref LayerHeader layer)
{
    fixed (ViewScaleDesc* descRef = ((ViewScaleDesc*)viewScaleDesc))
    {
        fixed (LayerHeader* headerRef = ((LayerHeader*)layer))
        {
            IntPtr layerListPtr = new IntPtr((void*)headerRef);
            return (Environment.Is64BitProcess ?
                    ovrHmd_SubmitFrame64(
                        base.NativePointer, frameIndex,
                        new IntPtr((void*)descRef), ref layerListPtr, 1) :
                        ovrHmd_SubmitFrame32(base.NativePointer, frameIndex, 
                        new IntPtr((void*)descRef),
                        ref layerListPtr, 1));// get_NativePointer()
        }
    }
}

反射器是否在这里提供了错误的代码或我做错了什么?

1 个答案:

答案 0 :(得分:2)

放弃演员。 &viewScaleDesc可以使用。