Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по OpenGL


Chel ©   (2005-08-29 14:32:00) 

Я использую OpenGL для вывода спрайтов. У каждого из них есть
Z-координата, т.к. одни спрайты должны быть поверх других.
Для этого включен буфер глубины, но теперь если один оказывается
поверх другого (а верхний прозрачен), то нижний не рисуется или
рисуется "отрезанным". Т.е. OpenGL не рисует объекты, которые
закрыты другими объектами, даже если на них натянута прозрачная
текстура.
Вопрос: какой командой отключается эта функция?


DR0N   (2005-08-29 20:44:00) [1]

первая строчка не нужна, случайно попала =)


DR0N   (2005-08-29 20:42:00) [2]

glGetFloatv(GL_CURRENT_COLOR, @LColor);
 glDisable(GL_DEPTH_TEST);
 glMatrixMode(GL_PROJECTION);
 glPushMatrix;
 glLoadIdentity;
 gluOrtho2D(0,InitResX,InitResY,0);
 glMatrixMode(GL_MODELVIEW);
 glPushMatrix;
 glLoadIdentity;
 glEnable(GL_BLEND);
 glEnable(GL_ALPHA_TEST);
 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

и рисуй что хош после этого в 2D все будет ок


Chel   (2005-08-29 17:57:00) [3]

Ok. Спосибо всем. Пойду сортировать. =)


XProger   (2005-08-29 17:53:00) [4]

В 2D использование Z-Buffer'a - роскошь...


Axis_of_Evil   (2005-08-29 17:47:00) [5]

> GL_DEPTH_TEST тоже по-моему лучше выключить
о чем и говорю
>А как тогда Z-координату юзать?

@@1
DepthTest вкл
рисуем непрозрачные объекты
DepthTest выкл
рисуем прозрачные объекты
jmp @@1

>Вручную сортировать...
наверное придется
// см полупрозрачный тор,
// который просто так корректно не выводится


MeF Dei Corvi   (2005-08-29 17:36:00) [6]


> А как тогда Z-координату юзать?

Вручную сортировать...

> то нижний не рисуется или
> рисуется "отрезанным".

По-моему ты как-то неправильно Depth Test делаешь.


Chel   (2005-08-29 17:16:00) [7]

Пока ничего не помогает.
> GL_DEPTH_TEST тоже по-моему лучше выключить
А как тогда Z-координату юзать?


MeF Dei Corvi   (2005-08-29 16:55:00) [8]

Есть такая вещь, как альфа-тест ;)
glDisable(GL_ALPHA_TEST)
Кстати, GL_DEPTH_TEST тоже по-моему лучше выключить.


Axis_of_Evil   (2005-08-29 16:28:00) [9]

рисуя прозрачные буфер глубины отключают, сколь я помню


grouzd[E]v   (2005-08-29 16:25:00) [10]

> Я ж говорю, что натягиваю прозрачные текстуры
RGB A<> BLEND

---
... we are walking on a thin line and you better avoid the risk ...


Chel   (2005-08-29 16:09:00) [11]

Хыхы =) Я ж говорю, что натягиваю прозрачные текстуры. Но всеравно при перекрывании спрайтами друг друга они коряво выводятся.


grouzd[E]v   (2005-08-29 15:31:00) [12]

glEnable(GL_BLEND)

---
... we are walking on a thin line and you better avoid the risk ...


Наверх

Титульная страница Поиск, карта сайта Написать письмо