Table of Contents

自定义场景渲染器

要创建自定义渲染器,可以直接实现 @'Stride.Rendering.Compositing.ISceneRenderer',或通过 @'Stride.Rendering.Compositing.DelegateSceneRenderer' 使用委托。

实现 ISceneRenderer

@'Stride.Rendering.Compositing.SceneRendererBase' 提供了 @'Stride.Rendering.Compositing.ISceneRenderer' 的默认实现。它会在调用 DrawCore 方法之前,自动将渲染器上定义的输出绑定到 GraphicsDevice。

[DataContract("MyCustomRenderer")]
[Display("My Custom Renderer")]
public sealed class MyCustomRenderer : SceneRendererBase
{
    // 实现 DrawCore 方法
    protected override void DrawCore(RenderContext context, RenderDrawContext drawContext)
    {
        // 访问图形设备
        var graphicsDevice = drawContext.GraphicsDevice;
        var commandList = drawContext.CommandList;
        // 清除当前渲染目标
        commandList.Clear(commandList.RenderTargets[0], Color.CornflowerBlue);
        // [...] 
    }
}

使用委托

要开发一个渲染器并直接将其附加到某个方法,请使用 @'Stride.Rendering.Compositing.DelegateSceneRenderer':

var sceneRenderer = new DelegateSceneRenderer(
    (drawContext) =>
    {
        // 访问图形设备
        var graphicsDevice = drawContext.GraphicsDevice;
        var commandList = drawContext.CommandList;
        // 清除当前渲染目标
        commandList.Clear(commandList.RenderTargets[0], Color.CornflowerBlue);
        // [...] 
   });

另请参阅