36 lines
1.4 KiB
Markdown
36 lines
1.4 KiB
Markdown
# RenderSurface::GetRenderAreaWidth
|
||
|
||
返回当前生效 render area 的宽度。
|
||
|
||
```cpp
|
||
uint32_t GetRenderAreaWidth() const;
|
||
```
|
||
|
||
## 返回值
|
||
|
||
- 返回 `max(GetRenderArea().width, 0)` 的无符号结果。
|
||
|
||
## 当前语义
|
||
|
||
- 这里没有单独缓存宽度;每次都会先调用 [GetRenderArea](GetRenderArea.md) 再取 `width`。
|
||
- 如果未启用自定义 render area,则结果等于 surface 的逻辑宽度。
|
||
- 如果自定义 render area 在设置时或 resize 后被 clamp 成空区域,这里会返回 `0`。
|
||
|
||
## 调用方影响
|
||
|
||
- `CameraRenderer::Render()` 会在宽度或高度为 `0` 时直接拒绝本次渲染。
|
||
- `ObjectIdRenderRequest::IsValid()` 也要求 render area 宽度大于 `0`,否则 object-id pass 会被视为无效请求。
|
||
- 因为这是从 [GetRenderArea](GetRenderArea.md) 动态推导出来的,所以它反映的是“当前实际可绘制宽度”,而不是调用 [SetRenderArea](SetRenderArea.md) 时的原始输入值。
|
||
|
||
## 测试覆盖
|
||
|
||
- `tests/Rendering/unit/test_camera_scene_renderer.cpp` 验证了相机渲染使用的 viewport 宽度来自 surface 的最终 render area。
|
||
- `tests/Rendering/unit/test_scene_render_request_utils.cpp` 验证了嵌套 viewport 计算后,render area 宽度会按父区域和相机 viewport 共同解析。
|
||
|
||
## 相关文档
|
||
|
||
- [RenderSurface](RenderSurface.md)
|
||
- [GetRenderArea](GetRenderArea.md)
|
||
- [GetRenderAreaHeight](GetRenderAreaHeight.md)
|
||
- [SetRenderArea](SetRenderArea.md)
|