2017-05-07 5 views
2

저는 현재 게임을위한 간단한 UI를 만들고 있고, 2 개의 파이프 라인 상태 (각각에 대해 동일한 버텍스 셰이더)를 사용해야하는 각 버튼을 그립니다. 하나는 경계를위한 선 스트립을 그리는 데 정적 색상 조각 쉐이더를 사용하고 하나는 졸졸 그라디언트로 버튼 내부를 그립니다.하나의 MTLRenderCommandEncoder에서 여러 MTLRenderPipelineStates를 사용할 수 있습니까?

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() 

답변

3

예, 명령 인코더를 렌더링 하나에 여러 개의 파이프 라인 상태를 사용할 수 있습니다 : 다음 작업을 수행 할 수 있다면 나는 두 개의 서로 다른 렌더링 명령 인코더, 파이프 라인 당 하나의 필요 궁금하거나하고 있습니다. 파이프 패스 상태가 렌더링 패스 설명자의 일부가 아니라 정확히 왜 setRenderPipelineState() 메서드가 있는지입니다. 렌더 패스 기술자의 속성은 렌더링 명령 인코더 생성시에만 읽혀지며 해당 엔코더의 수명 동안 변경할 수 없습니다. 인코더에서 독립적으로 설정할 수있는 모든 것은 수명 동안 변경 될 수 있습니다.

+0

고맙습니다. 내가 생각한 것입니다.하지만 확실하지 않았습니다. –

관련 문제