Как Apple отображает пользовательскую ширину линии в UIKit при рендеринге с помощью Metal

Вопрос о ширине линии металла говорит, что невозможно рисовать линии в металле с произвольной шириной линии . Однако Apple говорит, что все ее графические фреймворки, такие как UIKit, SpriteKit, SceneKit, используют Metal. Я хочу знать, как эти рамки имеют линии с разной шириной линии? Если они сделаны из треугольников, есть ли пример, показывающий, как это сделать? Кроме того, как тогда круг, другие примитивные формы будут нарисованы линиями различной ширины?


person Aravindh S    schedule 22.07.2018    source источник
comment
Линии (и пути в целом) разбиваются на треугольники и/или растрируются по строкам сканирования, в зависимости от используемого вами API. На самом деле это то, что вам нужно, поскольку при использовании растеризации линий с аппаратным ускорением контроль над качеством сглаживания и соединениями линий недостаточен. Но да, если вы хотите рисовать толстые линии с помощью Metal, вам будет проще.   -  person warrenm    schedule 23.07.2018


Ответы (1)


Я не знаю, как Apple делает свои линии. Но я нашел этот сайт, где довольно просто объясняется, как делать сглаженные линии различной ширины с треугольниками. Это для OpenGL, но Metal будет почти таким же. Есть много других подобных сайтов в Интернете с другими объяснениями и подходами, если вы погуглите тему.

http://merowing.info/2012/04/drawing-smooth-lines-with-cocos2d-ios-inspired-by-paper/

person bsabiston    schedule 23.07.2018