コンテンツにスキップ

RenderPipeline クラス

RenderObjectツリーの未処理レイアウトと未処理描画をフレーム単位で実行します。

名前空間: FloatSoda.Core
アセンブリ: FloatSoda.dll

public class RenderPipeline

object ← RenderPipeline

object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()

Dirty状態のRenderObjectを深さ順に処理し、現在このパイプラインに所属するノードだけを更新します。

次回のレイアウトフラッシュを待つRenderObjectの一覧を取得します。

public List<RenderObject> NodesNeedingLayout { get; }

List<RenderObject>

レイアウト中に新たなDirtyノードが登録された場合は、一覧が空になるまで同じフラッシュ内で処理します。

次回の描画フラッシュを待つRenderObjectの一覧を取得します。

public List<RenderObject> NodesNeedingPaint { get; }

List<RenderObject>

描画フラッシュ開始時に一覧は消去され、処理中に新たにDirtyとなったノードは次回の描画対象になります。

次フレームで視覚更新が必要になったときに呼び出す処理を取得します。

public required Action OnNeedVisualUpdate { get; init; }

Action

Dirtyリストが空の状態から更新が予約された際に、フレーム処理を起動するために使用します。

このパイプラインが管理するRenderObjectツリーのルートを取得または設定します。

public required RenderView RenderView { get; set; }

RenderView

設定したルートは直ちにこのパイプラインへ接続されます。

レイアウトがDirtyなノードを祖先から子孫の順に再レイアウトします。

public void FlushLayout()

処理によって追加されたDirtyノードも、待機一覧が空になるまで同じ呼び出し内で処理します。

描画がDirtyなノードを祖先から子孫の順に再描画します。

public void FlushPaint()

開始時点の待機一覧を消去して処理するため、処理中に追加されたDirtyノードは次回の描画フラッシュで処理されます。

視覚更新が必要であることをフレーム管理側へ通知します。

public void RequestVisualUpdate()

この呼び出し自体はレイアウトや描画を実行せず、次フレームの更新を予約します。

RenderPipeline.RenderView