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