custom-scene-renderers.md 2.8 KB

カスタム シーン レンダラー

カスタムシーンレンダラーを作成するには、@'Stride.Rendering.Compositing.ISceneRenderer' を直接実装するか、@'Stride.Rendering.Compositing.DelegateSceneRenderer' によるデリゲートを使用します。

ISceneRenderer を実装する

@'Stride.Rendering.Compositing.SceneRendererBase' は、@'Stride.Rendering.Compositing.ISceneRenderer' のデフォルトの実装です。この実装では、DrawCore メソッドが呼び出される前に、レンダラーの出力定義が RenderContext.GraphicsDevice プロパティに自動的にバインドされます。

[DataContract("MyCustomRenderer")]
[Display("My Custom Renderer")]
public sealed class MyCustomRenderer : SceneRendererBase
{
    // DrawCore メソッドの実装
    // Implements the DrawCore method
    protected override void DrawCore(RenderContext context, RenderFrame output)
    {
        // グラフィックデバイスを取得
        // Access to the graphics device
        var graphicsDevice = context.GraphicsDevice;
        
        // 現在のレンダーターゲットをクリア
        // Clears the currrent render target
        graphicsDevice.Clear(output.RenderTargets[0], Color.CornflowerBlue);
        // [...] 
    }
}

デリゲートを使用する

レンダラーを開発し、それをメソッドに直接アタッチするには、@'Stride.Rendering.Compositing.DelegateSceneRenderer' を使用します。

var sceneRenderer = new DelegateSceneRenderer(
    (renderContext, frame) =>
    {
        // グラフィックデバイスを取得
        // Access to the graphics device
        var graphicsDevice = context.GraphicsDevice;
        
        // 現在のレンダーターゲットをクリア
        // Clears the currrent render target
        graphicsDevice.Clear(output.RenderTargets[0], Color.CornflowerBlue);
        // [...] 
   });

関連項目