daily update on 20240325 by nitload youmu
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user