OpenGL Shader сделать цвет "исчезнуть" - PullRequest
0 голосов
/ 10 февраля 2011

Я новичок в opengl и шейдерах. Я пытаюсь создать дополненную реальность на iphone и возиться с шейдерами, чтобы изменить канал с камеры.

Я пытаюсь добиться того, чтобы объект на картинке исчез, установив цвет в соответствии с окружающим цветом. У меня есть желтый прямоугольник, и в нем есть маленький красный круг. Я хочу, чтобы впечатленный красный круг исчез, установив желтый цвет.

Это не всегда будут сплошные цвета, но я просто пытаюсь сначала разобраться с основами.

В настоящее время у меня есть простой шейдер, который сделает красный цвет светлее, но это не идеально, потому что он не приближается к окружающему цвету, и я хочу, чтобы это работало для объектов разного цвета и окружения разного цвета. *

Я даже не 100% шейдер, это то, на что мне нужно смотреть или даже opengl. Я использую его из-за производительности, которую он дает на iPhone.

Я в основном спрашиваю:

  1. Кто-нибудь делал или видел что-то подобное
  2. Я лаю не то дерево, используя opengl es и opengl sl?
  3. Это вообще возможно?

Приветствие.

1 Ответ

1 голос
/ 10 февраля 2011

Слышали ли вы об альфа-смешении? Цвета имеют 4 канала. Красный, зеленый, синий и альфа (rgba). Альфа-канал определяет прозрачность. Вы можете установить его на 0 (полностью прозрачный / невидимый) или 1 (полностью прозрачный).

Чтобы сделать ваш объект невидимым, просто установите альфа в 0! Например, в вашем фрагментном шейдере:

gl_FragColor.a = 0;

Вы можете достичь этого, не используя шейдеры, изменив значение альфа из вашей программы. Например:

glColor4f(1.0, 0.0, 0.0, 0.5); //Draws something red with half transparency (hence the 0.5)
glVertex3f(...);
glVertex3f(...);
glVertex3f(...);

Просто убедитесь, что у вас включено альфа-смешение:

glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...