自定义场景渲染器
要创建自定义渲染器,可以直接实现 @'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);
// [...]
});