|
| 一、 绘制 Mesh 流程: 涉及类及接口: 1. CMeshDX8: 继承关系:CMeshDX8->CBaseMeshDX8->IMeshDX8->Imesh 所在工程:\materialsystem\shaderdx8\shaderdx8.dsp 说明:Imesh 存在于 MaterialSystem 工程中 IMesh 中有两个 Draw 方法: virtual void Draw( int firstIndex = -1, int numIndices = 0 ) = 0; 用于一般绘制 virtual void Draw( CPrimList *pLists, int nLists ) = 0; 用于批量绘制的(只适用于静态Mesh) 2. CShaderAPIDX8 继承关系:CShaderAPIDX8-> IShaderAPIDX8-> IShaderAPI-> IShaderDynamicAPI 所在工程:\materialsystem\shaderdx8\shaderdx8.dsp 说明:顾名思义这是 d3dapi的封装,需要说明一点的是 hl2 使用宏来决定使用的是 d3d9 还是 d3d8 api,尽管这个工程名为 dx8, 这里使用的是dx9,. 3. CMaterial 继承关系:CMaterial -> IMaterialInternal -> IMaterial 所在工程:\materialsystem\ materialsystem.dsp 说明:绘制物体的属性的容器,包括渲染状态、使用纹理、着色器。 4. CShaderSystem 继承关系:CShaderSystem-> IShaderSystemInternal-> IShaderInit, IShaderSystem 所在工程:\materialsystem\ materialsystem.dsp 说明:负责引擎的着色控制,管理着色动态链接库,管理渲染状态设置等。 5.各种着色器实现类 继承关系:着色器实现类-> CBaseShader-> IShader 所在工程:\materialsystem\stdshaders\stdshader_*.dsp 说明:实现不同的物体着色方式。 具体流程: CmeshDX8::Draw() ->CbaseMeshDX8::DrawMesh() ->IShaderAPI::DrawMesh() ->Imaterial::DrawMesh() ->IshaderSystem::DrawElements() ->Ishader::DrawElements() ->着色器实现类::OnDrawElements() -> CBaseShader::Draw( ) ->IshaderSystem::DrawSnapshot() ->IshaderAPI::RenderPass() ->ImeshDX8::RenderPass() ->调用 DIP 如有纰漏,恳请赐教。 |
|
|
|