Metal Best Practices Guide에는 최상의 성능을 위해 "동적 버퍼 데이터를 업데이트하기 위해 트리플 버퍼링 모델을 구현"하고 "동적 버퍼 데이터는 버퍼에 저장된 자주 업데이트되는 데이터를 참조해야합니다"라고 명시되어 있습니다.금속 모범 사례 : 트리플 버퍼링 - 텍스처도?
모든 프레임을 업데이트해야하는 경우 MTLTexture
은 "버퍼에 저장된 자주 업데이트되는 데이터"로 간주됩니까? 위 가이드의 모든 예는 MTLBuffer
에 초점을 둡니다.
메틀 키트에서 애플의 구현은 nextDrawable
이라는 개념을 가지고 있습니다. 그래서 여기에 무슨 일이 일어 났을까요?
흥미 롭습니다. 감사합니다. 따라서 다중 패스 렌더링의 경우 - 한 패스는 배경을 텍스처로 렌더링하고, 다음 패스는 다른 텍스처로 오버레이를 렌더링하고, 이전 두 텍스처를 함께 합성하는 최종 패스는 동일한 위험을 감수합니다 마지막 패스가 아니라 첫 번째 두 패스의 대상 텍스처를 멀티 버퍼링하지 않고 손상을 방지 할 수 있습니까? – Tricky
설명하는 시나리오를 이해한다면 멀티플 버퍼링이 필요하지 않습니다. 한 프레임에 대한 두 텍스처의 합성은 다음 프레임을 위해 덮어 쓰기 전에 완료됩니다 (* 잘못된 순서로 명령을 대기열에 넣지 않는 한). –