Вы не получите дополнительную плату за период, потраченный в пределах BeginDraw
.
Вы получаете плату за ее вызов, как и любую другую функцию, так как она должна подготовить материал и справиться с состояниями. В этом отношении меньше BeginDraw
блоков лучше, чем больше.
Но вы не получите затрат из-за того, что блок имеет большую область видимости. На самом деле, было бы даже полезно вызвать его раньше, так как это дает времени lib2 Direct2D для выполнения фоновой обработки, если это необходимо. Может быть, просто привлечение памяти. Я ожидал бы, что это будет незначительным или не повлияет, но выполнение этого ранее, если это единственное изменение, может помочь не навредить.
На практике старайтесь использовать как можно меньше блоков. И используйте любой доступный API буферизации команд, в отличие от немедленных команд рисования. (извините за нехватку деталей здесь, я не очень знаком с DirectDraw, больше из OpenGL / Vulkan dev)