コード例 #1
0
    /// <summary>
    /// Starts the current render loop.
    /// </summary>
    /// <param name="frameRequestQueue">The <see cref="IFrameRequestQueue"/> instance to use, if available.</param>
    /// <param name="shaderRunner">The <see cref="IShaderRunner"/> instance to use to render frames.</param>
    public async void StartRenderLoop(IFrameRequestQueue?frameRequestQueue, IShaderRunner shaderRunner)
    {
        ThrowIfDisposed();

        Guard.IsNotNull(shaderRunner, nameof(shaderRunner));

        using (await this.setupSemaphore.LockAsync())
        {
            this.renderCancellationTokenSource?.Cancel();

            await this.renderSemaphore.WaitAsync();

            Thread newRenderThread = new(static args => ((SwapChainManager <TOwner>)args !).SwitchAndStartRenderLoop());
コード例 #2
0
ファイル: ComputeShader.cs プロジェクト: nasa03/ComputeSharp
 public ComputeShader(string name, IShaderRunner shaderRunner)
 {
     Name         = name;
     ShaderRunner = shaderRunner;
 }