我目前正在为游戏制作简单的用户界面,并绘制我需要使用 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()
Run Code Online (Sandbox Code Playgroud)
是的,您可以在一个渲染命令编码器中使用多个管道状态。这正是该setRenderPipelineState()方法存在的原因,而不是将管道状态作为渲染通道描述符的一部分。渲染通道描述符中的属性仅在创建渲染命令编码器时读取,并且在该编码器的生命周期内无法更改。在编码器上可独立设置的任何内容都可以在其使用寿命期间更改。
| 归档时间: |
|
| 查看次数: |
561 次 |
| 最近记录: |