Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.31;
Скачать: CL | DM;

Вниз

Z-Order   Найти похожие ветки 

 
KreeS ©   (2006-02-26 01:10) [0]

Я чет совсем запутался...
Кто-нить в курсе какие параметры вида надо установить в OGL чтобы:
а) было абсолютное 2д без перспективы
б) при этом учитывалась глубина
т.е. чтоб я мог у каждого спрайта задать свой Z-Order и, подставляя его в качестве z-координаты при рисовании, контролировал что поверх чего рисуется


 
XProger ©   (2006-02-26 01:37) [1]

glViewport(0, 0, Width, Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
glOrtho2D(0, Width, Height, 0, -1, 10);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
glEnable(GL_DEPTH_TEST);

Глубина принимает значения -1..10


 
grisme ©   (2006-02-26 05:44) [2]


> Кто-нить в курсе какие параметры вида надо установить в
> OGL


Вопрос некорректен.:) Не надо ничего указывать. просто рисуй все "по слоям", т.е. если спрайт выводится в "вверхнем слое", всем полигомам в этом слое присваиваешь координату z=0, если дальше- соответственно z>0 :)


 
KreeS ©   (2006-02-26 10:20) [3]


> glOrtho2D(0, Width, Height, 0, -1, 10);

наверно имеется ввиду glOrtho?

1. Поэкспериментировал с этим, выяснил, что при таком раскладе 1 - будет ближе всех к камере, а -10 дальше. Почему не наоборот?

2. Столкнулся с проблемой, когда текстуры с альфа маской перекрывали друг друга прозрачными областями, а некоторые иногда съезжали куда-то в сторону и вообще не мог понять что происходит. Поставил glDepthFunc(GL_ALWAYS); стало нормально. Что вообще значит GL_ALWAYS? :)


 
KreeS ©   (2006-02-26 11:13) [4]

C glDepthFunc(GL_ALWAYS) ИМХО глубина вообще учитываться перестала, поставил glDepthFunc(GL_LEQUAL) стало почти то что надо, но беда 2 иногда случается почему-то.


 
KreeS ©   (2006-02-26 11:37) [5]

вот скриншот бага:
http://www.krees85.narod.ru/temp/shot_01.jpg

тень от нижнего дерева перекрывается прозрачной облатью тени верхнего дерева


 
ancara ©   (2006-02-26 11:38) [6]


> 1. Поэкспериментировал с этим, выяснил, что при таком раскладе
> 1 - будет ближе всех к камере, а -10 дальше. Почему не наоборот?

 Ну так все правильно, ибо по-умолчанию, т.е. после
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;

камера смотрит в отрицательном направлении оси Z.

>  беда 2 иногда случается

 яне совсем понял в чем беда? Дальние полупрозрачные полигоны перекрывают ближние чтоли? Значит надо по глубине сортировать, дальние рисовать первыми, затем ближние...
 А glDepthFunc(GL_ALWAYS) значит что тест глубины будет всегда завершаться положительно, даже если между рисуемым объектом и камерой  есть другие, уже отрендеренные полигоны.  GL_LEQUAL - соответственно означает, что тест пройдут те точки, у которых Z меньше, либо равно того, что записано в depth-buffer"е.


 
KreeS ©   (2006-02-26 13:13) [7]


> Дальние полупрозрачные полигоны перекрывают ближние чтоли?

Именно это я и хотел сказать. Но нельзя ли решить эту проблему без сортировки, чтобы это выглядело примерно так:
for i := 0 to N do
 объект[i].нарисовать(x, y, z);
и чтобы он понимал, что может стоять за уже нарисованным объектом.
А то ведь я это и делаю только ради того чтобы не сортировать, а если сортировать, то и z-координата уже никакая не нужна.


 
KreeS ©   (2006-02-26 14:12) [8]

Ладно, упарился, поже что нельзя. Отсортирую... пошло оно nax }8(


 
XProger ©   (2006-02-26 17:08) [9]

Если тебе нужна не прозрачность а "дырки" в текстуре
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.5);

В противном случае - сортируй, но при этом отпадает необходимость в использовании Z-Buffer"а


 
KreeS ©   (2006-02-26 21:05) [10]

XProger
О да, свершилось!
Это оно. Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2006.12.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
15-1165559328
Slider007
2006-12-08 09:28
2006.12.31
Не связанные друг с другом 2 вопроса ;) (видео, клиент форума)


2-1165821434
makvell
2006-12-11 10:17
2006.12.31
справочная система


2-1165524022
Святослав
2006-12-07 23:40
2006.12.31
Как в Delphi 2006 написать собственные компоненты?


15-1165563723
vitv
2006-12-08 10:42
2006.12.31
Какая книга лучше?


3-1161331615
vvrz
2006-10-20 12:06
2006.12.31
вызов хранимой процедуры MS SQL