This commit is contained in:
2026-09-13 19:45:24 +08:00
parent 397a7a8cc4
commit 2db889ad89
58 changed files with 3526 additions and 213 deletions
@@ -185,7 +185,7 @@ public unsafe RenderingCanvas(params IDisplayee[] displayees)
DispEngine.BackgroundColor = new Vec3d(0.1, 0.1, 0.5);
DispEngine.BackgroundOpacity = 0.1;
DispEngine.SetViewToHomeView();
DispEngine.ImageRequestAfterBufferSwapped += DispEngine_ImageRequestAfterBufferSwapped;
DispEngine.FrameReady += DispEngine_FrameReady;
// Set initial size and start the rendering engine
this.Size = new System.Drawing.Size(500, 300);
@@ -193,7 +193,7 @@ public unsafe RenderingCanvas(params IDisplayee[] displayees)
}
</code></pre><h3 id="rendering-pipeline">Rendering Pipeline</h3>
<p>The rendering pipeline processes images from DispEngine and displays them:</p>
<pre><code class="lang-csharp" name="RenderingCanvas">private unsafe void DispEngine_ImageRequestAfterBufferSwapped(byte* bgra_unsignedbyte_pixels, int w, int h)
<pre><code class="lang-csharp" name="RenderingCanvas">private unsafe void DispEngine_FrameReady(byte* bgra_unsignedbyte_pixels, int w, int h, FramePins pins)
{
// Create a bitmap from the raw pixel data provided by DispEngine
Bitmap bitmap;
@@ -500,7 +500,7 @@ public RenderingCanvas()
<pre><code class="lang-csharp" name="RenderingCanvas">/// &lt;summary&gt;
/// Handles the buffer swapped event from DispEngine
/// &lt;/summary&gt;
private unsafe void RenderingCanvas_BufferSwapped(byte* data, int w, int h)
private unsafe void RenderingCanvas_BufferSwapped(byte* data, int w, int h, FramePins pins)
{
if (data == null)
return;
@@ -703,11 +703,11 @@ private unsafe void CanvasDataContextChanged(object sender, DependencyPropertyCh
if (pre != null) //this section will never occur if the datacontext not set twice.
{
pre.Terminate();
pre.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped;
pre.FrameReady -= RenderingCanvas_BufferSwapped;
}
if (cur != null)
{
cur.ImageRequestAfterBufferSwapped += RenderingCanvas_BufferSwapped;
cur.FrameReady += RenderingCanvas_BufferSwapped;
cur.Start((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height);
cur.IsVisible = IsVisible;
@@ -743,8 +743,8 @@ private unsafe void RenderingCanvas_Loaded(object sender, RoutedEventArgs e)
CurrentWindow = Window.GetWindow(this);
// Set up DispEngine rendering
DispEngine.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped;
DispEngine.ImageRequestAfterBufferSwapped += RenderingCanvas_BufferSwapped;
DispEngine.FrameReady -= RenderingCanvas_BufferSwapped;
DispEngine.FrameReady += RenderingCanvas_BufferSwapped;
DispEngine.Start((int)DisplayerPane.RenderSize.Width, (int)DisplayerPane.RenderSize.Height);
DispEngine.IsVisible = IsVisible;
}
@@ -755,7 +755,7 @@ private unsafe void RenderingCanvas_Loaded(object sender, RoutedEventArgs e)
private unsafe void RenderingCanvas_Unloaded(object sender, RoutedEventArgs e)
{
DispEngine.IsVisible = IsVisible;
DispEngine.ImageRequestAfterBufferSwapped -= RenderingCanvas_BufferSwapped;
DispEngine.FrameReady -= RenderingCanvas_BufferSwapped;
CurrentWindow = null;
}
</code></pre><h3 id="resource-cleanup-1">Resource Cleanup</h3>