Можете ли вы сделать два четырехугольника с прозрачностью в одной точке? - PullRequest
1 голос
/ 16 июля 2009

Я учусь тому, как использовать JOGL и OpenGL для рендеринга текстурных квадратов. У меня есть тестовая программа и тестовый квад, и я выяснил, как включить GL_BLEND, чтобы я мог указать альфа-значение вершины для создания квадрата с градиентом ... но теперь я хочу, чтобы это было показано на другой текстурированный квад в той же позиции.

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

Ответы [ 3 ]

2 голосов
/ 16 июля 2009

Посмотрите, какой glDepthFunc вы используете, возможно, вы используете GL_LESS / GL_GREATER, и он может работать, если вы используете GL_LEQUAL / GL_GEQUAL.

0 голосов
/ 16 июля 2009

Для альфа-смешивания средство визуализации смешивает все цвета за текущим прозрачным объектом (с точки зрения камеры) во время визуализации прозрачного объекта. Если прозрачный объект визуализируется первым, за ним не с чем смешаться. Если он отображается вторым, ему будет с чем смешиваться.

Попробуйте сначала отрендерить непрозрачный квад, а затем - второй прозрачный квад. Кроме того, убедитесь, что ваш непрозрачный квадрант находится немного позади прозрачного квадрата (относительно камеры), чтобы вы не получили чередование z-буфера.

0 голосов
/ 16 июля 2009

Трудно понять, чего именно вы пытаетесь достичь, но вот попытка

Чтобы прозрачность работала правильно в OpenGL, вам нужно нарисовать полигоны от самого дальнего к ближайшему к камере. Если ваша сцена статична, это определенно то, что вы можете сделать. Но если он вращается и двигается, то это обычно неосуществимо, поскольку вам придется сортировать полигоны для каждого кадра.

Подробнее об этом можно узнать на этой странице часто задаваемых вопросов:
http://www.opengl.org/resources/faq/technical/transparency.htm

...