图形渲染模块都在 Graphics 文件夹中
透明度排序问题
WindowMode 窗口模式
PrimitiveType 几何体的形式:点线三角形
IPlatform -> 创建 窗口/声音/字体
IPlatformWindow -> 由 IPlatform 创建
IGraphicsContext 包含在 IPlatformWindow 中
是 通过 IShader shader 直接绑定在流水线上
ViewPort 设置渲染画面的大小和窗口的位置
总 Renderner
Game 类里面有个总 Renderer
Renderer 包含多种渲染模块:
SpriteRenderer
RgbaSpriteRenderer
RgbaColorRenderer
ModelRenderer
他们都是 Batch Renderer
除了 Model 只有World 才有 其他都分为 World 和 Sprite 两套
Renderer -> 包含了 PlatformWindow 和 GriaphicsContext 还有 Window
IRender 表示的具体物体
Palette
调色板
Renderer.cs 中接口定义
IBatchRenderer
模型相关
- Model.cs
- ModelAnimation.cs
- ModelRenderer.cs
演示相关
- Pallete.cs
- PaletteReference.cs
游戏场景渲染
- WorldRenderer 好像只渲染游戏场景,因为我发现在游戏加载和安装下载界面都不会运行
WorldRenderer 在 StartGame 才会构造
从 BeginWorld 开始
然后调用 Draw()
Sprite 渲染
Shader 的输入
游戏渲染流程整理
游戏启动阶段:
- Game.InitializeAndRun()
- Run()
- Loop()
- RenderTick()
渲染阶段:
- 预备阶段
- 场景渲染
- UI渲染
- 渲染完毕 Flush 结果
建筑渲染举例
具体建筑实现了 IRender
Buildings.Bridge
每个建筑会有一个 Template 列表,代表不同状态需要渲染的东西,在 Render 按需返回
template ID 的对应关系在 tileset 中 用 Template@170 定义