742 B
742 B
OpenGLPipelineState::SetOwnedGraphicsShader()
void SetOwnedGraphicsShader(std::unique_ptr<OpenGLShader> shader);
作用
把一个 graphics shader program 的所有权交给当前对象。
当前实现行为
- 把
shader移入m_graphicsShader - 若非空,调用 SetProgram 使用其 program ID
- 若为空,调用 DetachShader
设计说明
OpenGLDevice::CreatePipelineState(...) 走的就是这条路径。也就是说,设备创建 graphics pipeline 时,真正被拥有和释放的是 OpenGLShader,而不是单独的 raw program ID。