【发布时间】:2017-05-07 02:37:30
【问题描述】:
我目前正在为游戏制作简单的 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()
【问题讨论】:
-
您是否再次为 2 个管道状态设置相同的纹理,如下所示? [renderEncoder setFragmentTexture:_mtlTexture atIndex:0];
-
@elmass 对不起,我不能告诉你。我在 Metal 中做过一些事情,但那是一年多以前的事了,从那以后我就把它从脑海里冲了出来。