Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
6-1155151325
mr. Eof
2006-08-09 23:22
2006.12.31
Проблема с Tidmessage


4-1155807718
apic
2006-08-17 13:41
2006.12.31
Битовый массив


11-1143003617
DmiSb
2006-03-22 08:00
2006.12.31
GridLines в ListView другого цвета


15-1165842155
Beavercrazy
2006-12-11 16:02
2006.12.31
Каким образом выполнить задачу по информированию клиентов?


1-1163143909
integeri
2006-11-10 10:31
2006.12.31
Как встроить в свою програму переводчик Pragma




   Наверх