957 B
957 B
OpenGLDevice::CreatePipelineState
RHIPipelineState* CreatePipelineState(const GraphicsPipelineDesc& desc) override;
作用
创建一份 OpenGL 管线状态对象,并在需要时同时构建 graphics program。
当前实现行为
- 总是先创建
OpenGLPipelineState - 把输入布局、光栅化、混合、深度模板、拓扑、RT format、sample count 写入该对象
- 若没有任何 graphics shader payload,直接返回仅含状态的 PSO
- 若有 shader payload,则要求至少同时存在 vertex 和 fragment shader
- 会
MakeContextCurrent() - 根据源码或文件路径构建
OpenGLShader - 成功后把该 shader 作为 owned graphics shader 挂到 PSO 上
返回值
- 成功返回
OpenGLPipelineState* - shader 不完整、上下文不可用或编译失败时返回
nullptr