Vixen
02b45cc4
csharp
public readonly record struct UiGeometry

A frame's worth of interface geometry.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

⚠ Thirty-two-bit indices, and not because a frame is expected to need them. Almost none do: sixteen bits reach 65 535 vertices, which is sixteen thousand quads, and a dense editor window is a few thousand. The reason is what happens to the one frame that does — an index that wraps draws geometry from the top of the frame in the middle of it, silently, and the picture is wrong rather than absent. Emitting the wider index costs two bytes per index on about an eighth of the frame's bytes, and buys never having to reason about the ceiling again.

Fields and properties (4)

  • public IReadOnlyList<UiVertex> Vertices

    Every vertex, in painting order.

  • public IReadOnlyList<uint> Indices

    Triangles into .

  • public IReadOnlyList<UiDraw> Draws

    What to draw, in painting order.

  • public IReadOnlyList<UiShape> Shapes

    One record per box, indexed by its vertices' Shape.X.

Methods (1)

  • public UiGeometry(IReadOnlyList<UiVertex> Vertices, IReadOnlyList<uint> Indices, IReadOnlyList<UiDraw> Draws, IReadOnlyList<UiShape> Shapes)

    A frame's worth of interface geometry.

Used by (14)

  • UiHostHelloUi
  • IconAtlasTestsVixen.Ui.Tests
  • NineSliceImageTestsVixen.Ui.Tests
  • PathTessellationCacheTestsVixen.Ui.Tests
  • SoftwareUiRasterizerVixen.Ui.Testing
  • UiFrameLifetimeTestsVixen.Graphics.Golden.Tests
  • UiGeometryBuilderVixen.Ui
  • UiGeometryTestsVixen.Ui.Tests
  • UiImageTestsVixen.Graphics.Golden.Tests
  • UiInterfaceVixen.Ui.Renderer
  • UiRendererVixen.Ui.Renderer
  • UiTestVixen.Ui.Testing
  • VideoInUiTestsVixen.Video.Rendering.Tests
  • EditorPaneVixen.Editor.Host