Здравствуйте!
К сожалению, разрабатывая механизм масок нам пришлось исходить из наших возможностей и думать о скорости прорисовки. Как мы поняли, речь идёт о маскировании телами примитивов. Данный механизм полностью основан на использовании буфера трафарета, который выделяется в видеопамяти видеоадаптера. При создании маски, прорисовка идёт не в буфер кадра, а именно в буфер трафарета. Чтобы группа 2 получила в распоряжение чистый слой маски, буфер трафарета необходимо очистить. А это достаточно затратная операция, время которой измеряется уже вплоть до миллисекунды. При этом не понятен критерий, для какой группы нужно очищать трафарет, а для какой нет. Что, если группе 1.2, как и группе 2, потребуется чистая маска? Таких очисток трафарета может происходить много, что в результате ‘убьёт’ производительность любой самой современной видеокарты.
Поэтому, реализуя механизм маскирования телами примитивов, мы перешли на более низкий уровень, дав пользователю возможность самому управлять очисткой слоя маски.
Режим прорисовки группы ‘Новая маска’ необходимо использовать в самом крайнем случае. Если область, которую на самом деле необходимо очистить небольшая, то может оказаться более быстрой по времени очистка этой области с помощью вырезки из маски телом, например, залитого прямоугольника.
Старайтесь всегда, когда это возможно, использовать отсечение с помощью секущей линии или секущего прямоугольника. Практически всегда они реализуются аппаратно и работают достаточно быстро.
По поводу дуги эллипса, посмотрите, пожалуйста, приложенный файл проекта.
Post's attachments ellipse.fpproj 4.44 Кб, 220 скачиваний с 2017-04-18