Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.039 c
10-1124864820
Alisher
2005-08-24 10:27
2006.12.31
Использование DCOM - технологий


8-1147592921
MasteR2
2006-05-14 11:48
2006.12.31
Многоугольник и окружность


4-1156501872
Тфьу
2006-08-25 14:31
2006.12.31
Как отловить ошибку макроса Excel?


15-1166040455
palva
2006-12-13 23:07
2006.12.31
Gmail открыли для всех


9-1140722396
Fenix
2006-02-23 22:19
2006.12.31
Поблемы с DCE. (нет компонента)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский