daily update on 20240325 by nitload youmu

This commit is contained in:
YoumuLiu
2024-03-26 02:49:41 +08:00
parent 02be081eee
commit f0d91b6d51
36 changed files with 145 additions and 1815 deletions
+20 -15
View File
@@ -295,40 +295,44 @@ namespace StgSharp.Graphics
SwapBuffers();
PollEvents();
frameTimeProvider.WaitNextSpan();
Console.WriteLine(frameTimeProvider.CurrentSpan);
}
}
else
{
GLonUpdate update = new GLonUpdate((GLcontext*)graphicContextID); //更换GL库至双线程模式
FrameAsyncThread updateT = new AsyncUpdateDataTask(this); //建立两个异步线程
FrameAsyncThread renderT = new AsyncRenderFrameTask(this);
AsyncUpdateDataTask updateT = new AsyncUpdateDataTask(this); //建立两个异步线程
AsyncRenderFrameTask renderT = new AsyncRenderFrameTask(this);
frameAsyncTaskList.Add(renderT);
frameAsyncTaskList.Add(updateT);
gl = update;
update.ActivatedOperationBuffer = updateT.opBuffer;
SemaphoreSlim frameBeginSemaphore = FrameAsyncThread.CombineAsync(renderT, updateT);
SemaphoreSlim renderCompleteSemaphor = renderT.AsyncStart();
SemaphoreSlim updateCompleteSemaphor = updateT.AsyncStart();
Barrier frameBarrier = FrameAsyncThread.CombineBeginningAsync(true, renderT, updateT);
Barrier swapBufferBarrier = renderT.TodoCompleteBarrier;
Barrier exchangeBufferBarrier = updateT.TodoCompleteBarrier;
renderT.AsyncStart();
updateT.AsyncStart();
while (!ShouldClose)
{
Console.WriteLine(1);
frameBeginSemaphore.Release(2); //启动下一个渲染循环
Console.WriteLine(2);
renderCompleteSemaphor.Wait(); //等待两个线程完成
updateCompleteSemaphor.Wait();
Console.WriteLine(3);
SwapBuffers(); //GLFW必要操作
swapBufferBarrier.SignalAndWait();
SwapBuffers(); //绘制帧必要操作
PollEvents();
Console.WriteLine(4);
exchangeBufferBarrier.SignalAndWait();
FrameAsyncThread.ExchangeBuffer(updateT, renderT); //交换两个线程的缓冲区
update.ActivatedOperationBuffer = updateT.opBuffer;
Console.WriteLine(5);
frameTimeProvider.WaitNextSpan(); //等待下一帧开始
Console.WriteLine(6);
frameBarrier.SignalAndWait();
Console.WriteLine(frameTimeProvider.CurrentSpan);
}
updateT.Terminate();
renderT.Terminate();
}
}
}
@@ -397,5 +401,6 @@ namespace StgSharp.Graphics
#endregion form main
}
}