public override bool DrawTextureWithBuffer(IntPtr textureId, WVR_CameraImageFormat imgFormat, IntPtr frameBuffer, uint size, uint width, uint height)
 {
     return(DrawTextureWithBuffer_HVR(textureId, imgFormat, frameBuffer, size, width, height));
 }
Beispiel #2
0
    private static void RenderEvent(int eventId)
    {
        if ((eventId & (int)EngineEventID.ENGINE_EVENT_ID_BEGIN) == (int)EngineEventID.ENGINE_EVENT_ID_BEGIN)
        {
            NativeProcessEngineEvent((uint)EngineThreadID.RENDER_THREAD, (uint)eventId);
            return;
        }

        switch (eventId)
        {
        case RENDEREVENTID_EditorEmptyOperation:
            break;

        case RENDEREVENTID_INIT_GRAPHIC:
            break;

        case RENDEREVENTID_SHUTDOWN_GRAPHIC:
            // Use native code to shutdown compositor.
            NativeRenderEvent(k_nRenderEventID_GraphicShutdown);
            break;

        case RENDEREVENTID_Systrace_BeginSession:
            string sectionName;
            lock (TraceSessionNameQueue)
            {
                try
                {
                    sectionName = (string)TraceSessionNameQueue.Dequeue();
                }
                catch (System.InvalidOperationException)
                {
                    sectionName = "Empty";
                }
            }
            TraceBeginSection(sectionName);
            break;

        case RENDEREVENTID_Systrace_EndSession:
            TraceEndSection();
            break;

        case RENDEREVENTID_StartCamera:
        {
            WVR_CameraInfo_t camerainfo = new WVR_CameraInfo_t();
            var result = Interop.WVR_StartCamera(ref camerainfo);

            Event.Send("StartCameraCompleted", result, camerainfo);
        }

        break;

        case RENDEREVENTID_StopCamera:
        {
            Interop.WVR_StopCamera();
        }

        break;

        case RENDEREVENTID_UpdateCamera:
        {
            var updated = Interop.WVR_UpdateTexture(WaveVR_CameraTexture.instance.getNativeTextureId());
            Event.Send("UpdateCameraCompleted", updated);
        }
        break;

        case RENDEREVENTID_DrawTextureWithBuffer:
        {
            IntPtr nativeTexId = WaveVR_CameraTexture.instance.getNativeTextureId();
            uint   bufferSize  = WaveVR_CameraTexture.instance.getImageSize();
            IntPtr framebuffer = WaveVR_CameraTexture.instance.getNativeFrameBuffer();
            uint   width       = WaveVR_CameraTexture.instance.getImageWidth();
            uint   height      = WaveVR_CameraTexture.instance.getImageHeight();
            WVR_CameraImageFormat imgFormat = WaveVR_CameraTexture.instance.getImageFormat();

            bool updated = Interop.WVR_DrawTextureWithBuffer(nativeTexId, imgFormat, framebuffer, bufferSize, width, height);

            Event.Send("DrawCameraCompleted", updated);
        }
        break;

        case RENDEREVENTID_ReleaseTexture:
        {
            Interop.WVR_ReleaseCameraTexture();
        }
        break;

        case RENDEREVENTID_RenderMaskLeft:
        {
            Interop.WVR_RenderMask(WVR_Eye.WVR_Eye_Left);
        }
        break;

        case RENDEREVENTID_RenderMaskRight:
        {
            Interop.WVR_RenderMask(WVR_Eye.WVR_Eye_Right);
        }
        break;

        case RENDEREVENTID_SinglePassPrepare:
        case RENDEREVENTID_SinglePassPrepareWithAntiAliasing2x:
        case RENDEREVENTID_SinglePassPrepareWithAntiAliasing4x:
        case RENDEREVENTID_SinglePassPrepareWithAntiAliasing8x:
        {
            var render = WaveVR_Render.Instance;
            if (render == null)
            {
                return;
            }
            int aa = eventId - RENDEREVENTID_SinglePassPrepare;
            PrepareSinglePassTexture(aa, (int)render.sceneWidth, (int)render.sceneHeight);
        }
        break;

        case RENDEREVENTID_SinglePassBeforeForwardOpaque:
        {
            SinglePassBeforeForwardOpaque();
        }
        break;

        case RENDEREVENTID_SinglePassPostRender:
        {
            SinglePassPostRender();
        }
        break;

        case RENDEREVENTID_ExecuteCustomFunction:
        {
            if (mCustomRenderThreadFunc != null)
            {
                mCustomRenderThreadFunc();
            }
            mCustomRenderThreadFunc = null;
        }
        break;
        }
    }
 public static extern bool DrawTextureWithBuffer_HVR(IntPtr textureId, WVR_CameraImageFormat imgFormat, IntPtr frameBuffer, uint size, uint width, uint height);