Главная страница
    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.47 MB
Время: 0.044 c
2-1165735440
intel
2006-12-10 10:24
2006.12.31
Здравствуйте


2-1165911061
pathfinder
2006-12-12 11:11
2006.12.31
Win to Dos, Unicode..


9-1140806407
Fenix
2006-02-24 21:40
2006.12.31
Ищу компоненты GLScene.


4-1156405675
maxistent
2006-08-24 11:47
2006.12.31
Иконки...


3-1161330355
Megabyte
2006-10-20 11:45
2006.12.31
Не работает RowsAffected у TpFIBStoresProc





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский