我目前正在为游戏制作简单的 UI,为了绘制每个按钮,我需要使用 2 个管道状态(每个按钮使用相同的顶点着色器)。一种是使用静态颜色片段着色器绘制边框线带,另一种是使用波纹渐变绘制按钮的内部。我想知道是否需要两个不同的渲染命令编码器,每个管道一个,或者我是否可以执行以下操作:
let encoder = command.makeRenderCommandEncoder(descriptor: renderPassDesc)
encoder.setRenderPipelineState(stateWithStaticFragmentShader)
// encode some buffers and draw line-strips
encoder.setRenderPipelineState(stateWithGradientFragmentShader)
// encode some buffers and draw button background
encoder.endEncoding()
是的,您可以在一个渲染命令编码器中使用多个管道状态。这正是为什么setRenderPipelineState()
方法存在,而不是管道状态是渲染通道描述符的一部分。渲染通道描述符中的属性仅在创建渲染命令编码器时读取,并且在该编码器的生命周期内无法更改。编码器上可独立设置的任何内容都可以在其使用寿命期间进行更改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)