Ejemplo n.º 1
0
        /// <summary>
        /// Updates and renders the scene.
        /// </summary>
        private void UpdateAndRender()
        {
            try
            {
                var t0 = renderTimer.Elapsed;

                // Update all renderables before rendering
                // giving them the chance to invalidate the current render.
                renderRenderable.Update(t0);

                if (pendingValidationCycles > 0)
                {
                    pendingValidationCycles--;

                    // Safety check because of dispatcher deferred render call
                    if (surfaceD3D != null)
                    {
                        Render();
#if MSAA
                        device.ImmediateContext.ResolveSubresource(colorBuffer, 0, renderTargetNMS, 0, Format.B8G8R8A8_UNorm);
#endif
                        surfaceD3D.InvalidateD3DImage();
                    }
                }

                lastRenderingDuration = renderTimer.Elapsed - t0;
            }
            catch (Exception ex)
            {
                if (!HandleExceptionOccured(ex))
                {
                    MessageBox.Show(string.Format("DPFCanvas: Error while rendering: {0}", ex.Message), "Error");
                }
            }
        }
Ejemplo n.º 2
0
 private void Invalidate(CommandList command)
 {
     if (!IsInitalized)
     {
         return;
     }
     try
     {
         renderContext.ExecuteCommandList(command, true);
         renderContext.Flush();
         surfaceD3D.InvalidateD3DImage();
     }
     finally
     {
         Disposer.RemoveAndDispose(ref command);
         IsBusy = false;
     }
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Updates and renders the scene.
        /// </summary>
        private void UpdateAndRender()
        {
            try
            {
                if (pendingValidationCycles > 0)
                {
                    var cycle = System.Threading.Interlocked.Decrement(ref pendingValidationCycles);

                    var t0 = renderTimer.Elapsed;
                    // Update all renderables before rendering
                    // giving them the chance to invalidate the current render.
                    renderRenderable.Update(t0);

                    // Safety check because of dispatcher deferred render call
                    if (surfaceD3D != null)
                    {
                        if (cycle == 1)
                        {
                            Render();
                        }
                        else
                        {
                            surfaceD3D.InvalidateD3DImage();
                        }
                    }

                    lastRenderingDuration = renderTimer.Elapsed - t0;
                }
            }
            catch (Exception ex)
            {
                if (!HandleExceptionOccured(ex))
                {
                    MessageBox.Show(string.Format("DPFCanvas: Error while rendering: {0}", ex.Message), "Error");
                }
            }
        }