В идеале я хотел бы иметь несколько рабочих потоков, чтобы иметь возможность отображать цели рендеринга за пределами экрана, а затем «переносить» отображаемый контент в цель на экране. С целями рендеринга hwnd это не кажется проблемой (у msdn есть пример).
Я не совсем уверен, как это сделать, когда цель рендеринга на экране основана на цепочке обмена DXGI. Насколько я знаю, у меня может быть только одна цепочка подкачки на окно. Поэтому у меня может быть только одна цель рендеринга на основе цепочки обмена. Это означает, что рендеринг на экране может быть выполнен только через эту единственную цель рендеринга.
Если мои приведенные выше предположения верны, как лучше всего справиться с многопоточным рендерингом? Нужно ли сериализовать доступ к цели на экране? Должны ли рабочие потоки совместно использовать одну многопоточную фабрику d2d? Может ли экранная цель BeginDraw/EndDraw/Present выполняться в рабочих потоках (т. е. потоках, которые не создавали экранную цель), если имеется надлежащий механизм блокировки?
Буду признателен за любые предложения. Спасибо.