本日里程碑#
21 个接口类全部基类化——平台层类从"纯接口(纯虚方法)“升级为"完整基类(成员变量 + 属性 + 前端逻辑 + Platform* 虚方法钩子)",并完成整体复查。
背景:为什么要基类化#
此前平台层 partial 类被移植为"接口类”(只含 Platform* 纯虚方法契约)。复查发现这是遗漏的根源:接口化只提取了钩子契约,而 GraphicsDevice 等完整类的成员变量与前端逻辑(600+ 行)被跳过了。经确认,改为"移植为基类而非接口类"。
完成内容#
批 1:GraphicsDevice 基类化(igraphics_device.hpp → graphics_device.hpp)#
- 53 个成员变量(
_viewport/_blendState族/预置状态/集合)照抄 C# L37-200 - 属性访问器(Viewport/BlendState/ScissorRectangle/IsRenderTargetBound 等)
- 前端逻辑(
Clear×3/Present/Reset/Dispose/ApplyState) - 32 个
Platform*虚方法钩子
批 2-3:资源类与状态类基类化#
Texture2D(构造链 + SetData/GetData 前端 8 重载)、VertexBuffer/IndexBuffer/Shader/ConstantBuffer- 4 个状态类(
BlendState/DepthStencilState/RasterizerState/SamplerState,状态属性全集) - 集合类(
TextureCollection/SamplerStateCollection,索引器 + 槽位数组)
C++ 语言映射确立#
基类构造内不能调用纯虚函数(UB)——C# 构造里 PlatformConstruct(...) 的调用点,C++ 改由平台层派生类构造完成后显式调用(语义等价)。
整体复查(对照 C# 逐类核对)#
- 补
GraphicsDevice预置状态 10 个(_blendStateAdditive等)+ EffectCache/集合 4 个/ResourcesLost - 补
ShaderHashKey/Samplers/Attributes(修正 Stage 注释行号) - 补
ConstantBuffer_buffer/_parameters等 6 成员 - 补 3 个状态类
_defaultStateObject/StencilOperation 系列等 10 项
验证#
- ✅ 145 头文件独立包含零警告 + 33 cpp 链接成功
- ✅ 提交:
feat(graphics)基类化 +docs同步
下一步#
- 新增《下一步工作计划》文档(8 章节:进度快照/收尾/A6-A9/B1-B5/C 阶段/优先级/里程碑/风险)
- 剩余 11 个接口类基类化收尾 → 阶段 A6(Reader 家族)+ A8/A9(GraphicsResource/Adapter/DeviceManager + 状态枚举)