Я пытаюсь нарисовать прямоугольник с помощью современного Opengl, используя шейдер для заполнения и обводки. Я отправляю цвет заливки, цвет обводки и ширину обводки в единый блок во фрагментном шейдере (вместе с положением и размером прямоугольника). Каков рекомендуемый способ установки фрагментов обводки в цвет обводки и фрагментов заливки в цвет заливки?
На данный момент у меня в голове витают 2 идеи. Во-первых, оператор if, который проверяет, находится ли координата фрагмента в пределах границ прямоугольника или обводки прямоугольника, и устанавливает цвет фрагмента на основе этого. Эти методы будут создавать довольно большой сложный оператор if, и когда придет время повернуть прямоугольник, все может стать еще хуже. (Кроме того, я читал, что следует избегать ветвления в шейдере)
Вторая идея, которая у меня есть, состоит в том, чтобы использовать функцию расстояния со знаком для определения цвета, но я не знаком с их использованием, и у меня есть идея, что они не слишком хорошо обрабатывают острые углы.
Я далеко от цели здесь? Возможно, есть лучший способ сделать это?