#opengl-es #opengl-es-2.0 #color-blending
#opengl-es #opengl-es-2.0 #смешивание цветов
Вопрос:
я хочу смешать две прямые линии, но я хочу нарисовать только смешанную область (область, где прямые пересекаются), как это сделать
Комментарии:
1. Сделайте себя зарегистрированным пользователем. У вас будет больше ответов 🙂
Ответ №1:
Если вы не хотите вычислять пересечение, вы, вероятно, можете использовать буфер трафарета для достижения этой цели. читайте об этом здесь:
http://bluevoid.com/opengl/sig00/advanced00/notes/node118.html
Вы можете нарисовать две прямые линии с шагом в буфере трафарета, а затем замаскировать только те пиксели, которые имеют значение > 2, то есть пиксели, где были нарисованы 2 или более прямых линии.
Комментарии:
1. Я не думаю, что это возможно, или, может быть, я не до конца понимаю, как работает буфер трафарета, у меня есть один большой массив вершин со всеми прямоугольниками внутри, я не могу рисовать их один за другим, потому что их много и это очень медленно. Мне нужно глубже разобраться со scencil 🙂
Ответ №2:
Пересечение двух выпуклых прямых всегда является прямым. так почему бы просто не вычислить пересечение и не нарисовать только это?
Комментарии:
1. Только если они выровнены по оси 😉
2. Ну, они выровнены по оси, но вычисление этих пересечений может быть медленным, у меня около 400 прямых и 1 ГГц hummingbird.
Ответ №3:
GLES20.glEnable( GLES20.GL_BLEND );
GLES20.glBlendFunc( GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA );
Но вам следует самостоятельно настроить поведение вашей функции смешивания.
И в шейдере я установил альфа-канал. Вы можете увидеть результат:
сообщение о смешивании. исходный код Android project