PMG

Форумы по созданию игр
Текущее время: 18 апр 2024 06:15

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 11 авг 2005 14:48 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Вот, что-то нарыл, посмотри, что подойдет:
http://www.flipcode.org/cgi-bin/fcmsg.c ... _show=1720
http://www.opengl.org/resources/faq/tec ... offset.htm

Т.е. что можно сделать:
1. Перейти на 24 битый z-буфер.
2. Вместо glDepthFunc(GL_LESSEQUAL) использовать glDepthFunc(GL_LESS).
3!!! Использовать glPolygonOffset.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 авг 2005 15:29 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
MagicWolf, спасибо. Но что такое glPolygonOffset?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 авг 2005 15:50 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
http://www.progz.ru/articles.php?view=56 - 6.4 Смещение полигонов

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 авг 2005 15:15 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
MagicWolf, если честно, то glPolygonOffset мне не поможет. Я понимаю, сеточка на фигуре у меня будет красивая, но она наоборот должна быть незаметна.

Или это может помочь для решения зазоров? Хотя, учитывая то, что я "понял" их причину (отсутствие общих точек), я не думаю, что это поможет...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 авг 2005 16:33 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Смещение поможет разделить по глубине разные полигоны с одинаковой глубиной, соответствено будет правильно и их отображение. Попробуй!

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 авг 2005 16:38 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
MagicWolf, к сожалению, это не поможет в вопросе с пересекающимися полигонами. Тут полюбому надо их рассекать. А полигонов с "одинаковой глубиной" у меня нету. Они все на разных глубинах. Хотя,... попробую. Может и поможет.

Сейчас занят. Вообще ошибочка вылетела... Пропадают полигоны на рендеринге. Я просто шокрован. Они есть, но на рендер не идут. Где-то глюк. Вот и ищем...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 авг 2005 08:35 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Вот нашел в Premier Press - Beginning OpenGL Game Programming (2004).pdf:
Цитата:
Z-Fighting
When drawing overlapping triangles with similar depth values, a visual artifact known as
z-fightingcan manifest itself, causing the triangles to flicker as the camera moves. This is an imprecision
issue; because depth values are stored in a finite (and relatively small) range, small errors
introduced during their calculation can cause triangles that should be behind other triangles to
show through them instead.
Z-fighting usually happens when using a 16-bit depth buffer, so switching to a 24-bit depth buffer
usually fixes the problem. However, to get a hardware-accelerated 24-bit depth buffer, you usually
have to also request a 32-bit color buffer, which may not be possible on older systems. In addition,
even with a 24-bit depth buffer, you may still experience z-fighting.
The best solution is often to modify the values used for the far and near clip planes. Making the
view frustum shorter allows for greater precision. Furthermore, z values are mapped to the depth
buffer in a nonlinear fashion, so that objects closer to the screen have greater precision than
objects farther away. Therefore, increasing the distance to the near clip plane has a more dramatic
effect than decreasing the distance to the far clip plane. For instance, doubling the near plane distance
from 1 to 2 doubles the precision of the depth buffer.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 авг 2005 08:39 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
DarkAngel писал(а):
MagicWolf, к сожалению, это не поможет в вопросе с пересекающимися полигонами. Тут полюбому надо их рассекать. А полигонов с "одинаковой глубиной" у меня нету. Они все на разных глубинах. Хотя,... попробую. Может и поможет.


У тебя края некоторых полигонов находятся на одинаковой глубине, если ты их растащишь по глубине, эффект наложения их друг на друга пропадет.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 авг 2005 13:07 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
MagicWolf, да нет... Мне это не поможет. Даже если я разнесу "края полигонов" по глубинам, то онибудут смешиваться (blending) между собой и будет та же самая картина. Но всё равно СПАСИБО.

Кстати, от точек избавился путем переходна на полигоны. Вот только проявились "интересные" ошибки - не все полигоны идут на рендер. Что-то я намутил с нормалями... :(
__________________________________________________________
Ошибка интересна только тогда, когда она удаленая из проекта, проект сдан и можно спокойно разобраться в её прирорде


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 авг 2005 13:12 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Так тебе и надо чтобы они смешивались. Просто тебя интересует порядок смешивания. Пусть полигон 1 и 2 одним краем соприкасаются. Если тебе надо отрендерить вначале полигон 2 а потом 1, то у полигона 2 надо увеличить глубину, чтобы в буфер глубины для точек полигона 2 записалось значение более дальнее, чем для полигона 1.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 авг 2005 13:28 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
MagicWolf, мне надо что бы смешивались полигоны из разных фигур. Мне не надо что бы смешивались соседние (по общему ребру) полигоны в одной фигуре. А для разных фигур у меня проблем уже не возникает...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 авг 2005 13:42 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
Поправочка: От точек не избавился. Избавился от всех "зазоров" и почти от всех "наездов". Но все таки, несколько наездов остаются. Отсюда следует (при учете того факта, что не все полигоны идут в нужном порядке на рендер), что я за 4 дня сделал только хуже. :x


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 авг 2005 16:30 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Какое значение у тебя у ближней плоскости пирамиды видимости?

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 авг 2005 17:48 
Не в сети
Любитель
Аватара пользователя

Зарегистрирован: 16 июл 2005 04:00
Сообщения: 41
Откуда: Санкт-Петербург
MagicWolf, gluPerspective(45.0, dAspect, 0.01, 1000.0);
Фигура вертится в сфере радиусом 128 у.е. с центром в точке [0, 0, -575]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 авг 2005 16:14 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
gluPerspective(45.0, dAspect, 0.01, 1000.0);
~~~ - ВОТ ГДЕ ОШИБКА!!!! Поставь 10!

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB