Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Корявая прорисовка (Direct3D) [Delphi, C++ Builder, Windows]


VolanD666 ©   (2004-12-01 15:43:00) 

Здрасти, программеры.
Вот начал писать свою игру. Типа ходит чувак (от первого лица) по коридору. И все бы хорошо, вот только наверху у стенок какие то зубцы рисуются, а если стенку сделать выше, то зубья становятся острее.
:-O.


VolanD666   (2004-12-05 07:28:00) [1]

Спасибо.


Sapersky   (2004-12-04 20:33:00) [2]

А вообще есть где-нибудь ссылки в интернете по теме: "Как написать свой Doom", а то искал в поисковиках, но не нашел?

Так прямо и искал? :)
Вообще ссылки, в некотором роде, есть. Искать нужно по словам  BSP/PVS и Portal (портал).

На gamedev.ru была статья по BSP.
Или вот ещё, с примерами:
http://www.cs.sun.ac.za/~henri/advgfx.html
Но по-английски...


cyborg   (2004-12-04 10:06:00) [3]


> "Как написать свой Doom"

Пиши по адресу: Дурдом, палата №6
;)


VolanD666   (2004-12-04 09:02:00) [4]

Спасибо, за ссылку. Но я, честно говоря, не дружу с английским языком. :-)
А вообще есть где-нибудь ссылки в интернете по теме: "Как написать свой Doom", а то искал в поисковиках, но не нашел?


Sapersky   (2004-12-03 18:32:00) [5]

1) В силу особенностей математики Z-буфера точность при задании NearPlane < 1 уменьшается очень сильно. Примерное представление о том, какой интервал на самом деле задаётся, можно получить переставив все ноли спереди от NearPlane назад к FarPlane :), точнее, разделив FarPlane на NearPlane. Т.е. интервал 0.001 .. 1000 эквивалентен 1 .. 1000000.
2) Распределение точности в Z-буфере нелинейное - чем ближе, тем точнее, грубо говоря, на первые 10% интервала тратится 90% точности.
Поэтому даже при относительно вменяемом интервале 0.001 .. 2 (= 1..2000) вся точность уходит на объекты 0.001 .. 0.01 (много таких? :)), а на остальные почти ничего не остаётся.

Всё это есть в статье по ссылке, которую я давал...


VolanD666   (2004-12-03 14:23:00) [6]

Пробовал менять это число на 2.0:
D3DXMatrixPerspectiveFovLH (&matProj, D3DX_PI/4, 1.0f, 0.001f, 1000.0f);.
Ничего не изменилось. :-(


Sapersky   (2004-12-02 15:28:00) [7]

Хотя нет, увеличение разрядности не поможет.

Ты посчитай сколько у тебя градаций получается от 00.1 до 1000? Ну с шагом 0.01 это выходит минимум 100000 градаций буфера

Даже хуже.

http://www.mvps.org/directx/articles/using_w-buffers.htm

Если посчитать, как там написано, то получается, что 99.9% точности Z-буфера в данном случае тратится на интервал 0.001..1

Можно, конечно, использовать W-буфер, но он поддерживается не всеми картами, так что лучше ограничить расстояние, на которое можно подходить к стене (зачем 0.001? Если это метры - то вряд ли кто-то сможет подойти к стене на 1 мм :)).


Sapersky   (2004-12-02 14:09:00) [8]

У меня его откомпиленый проэкт идет и все пашет.

Может, он использует 24(32)-битный Z-буфер, а у тебя 16-битный?


VolanD666   (2004-12-02 13:53:00) [9]

А тогда при подходе к стене можно будет посмотреть за нее.
> Ему повезло, у него видеокарточка была другая.

У меня его откомпиленый проэкт идет и все пашет.


Darthman   (2004-12-02 13:30:00) [10]

//А вот, мой знакомый писал на Delphi и у него все путем.
Ему повезло, у него видеокарточка была другая.

Ты посчитай сколько у тебя градаций получается от 00.1 до 1000? Ну с шагом 0.01 это выходит минимум 100000 градаций буфера. МИНИМУМ, карточка с этим не справляется. Меняй ближнее отсечение на 1.0


VolanD666   (2004-12-02 13:25:00) [11]

А вот, мой знакомый писал на Delphi и у него все путем.


NailMan   (2004-12-02 10:20:00) [12]

VolanD666
Нельзя такое значение в near задавать - теряется точность работы Z-buffer.

Как правило принято устанавливать nearclip в 1.0

---
WBR, NailMan aka 2:5020/3337.13


VolanD666   (2004-12-02 05:32:00) [13]

Не стены рисуются нормально (треугольников хватает). Раньше все работало нормально, но как только изменил ближнюю прорисовку:
D3DXMatrixPerspectiveFovLH (&matProj, D3DX_PI/4, 1.0f, 0.001f, 1000.0f);. Наверху у стен появились искажения.


MeF Dei Corvi   (2004-12-01 19:05:00) [14]


> VolanD666   (01.12.04 15:43)  

Поясни конкретнее о чем речь. Можно скриншотом.


XProger   (2004-12-01 18:57:00) [15]

Я так понял - рачь идёт о "Z-Fighting". Что-то вроде совпадения глубины в Z-Buffer'е


XProger   (2004-12-01 18:56:00) [16]

Либо слишком большие числа используешь :)


MeF Dei Corvi   (2004-12-01 18:54:00) [17]


> какие то зубцы рисуются

Дык криво стены рисуешь... Треугольники лишние.


Наверх

Титульная страница Поиск, карта сайта Написать письмо