![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вывод в DirectX
lokid7 © (2003-08-03 15:57:00)
У меня такая проблема, при выводе двух треугольников, из которых получается квадрат размером в 4 единицы, т.е -2 до 2, на их общей прямой, по которой они содиняются, пробегают точки такого же цвета, что и фон, а при уменьшении треугольнов они исчезают. Выходит, что DirectX на кладывает какие-то правила по размеру примитивов (точнее треугольников)? Если я прав, то как можно узнать об этих самых правилах? Если это нетак, то как можно избежать такого эффекта? Может что-то я нетак понимаю?
И еще хотел узнать какие размеры обычно имеют уровни в играх, а именно создают уровень размером в несколько единиц и масшатабируют его вместе с находящимися на нем моделями или создают большой уровень?
Заранее всем большое спасибо.
Sapersky_ (2003-08-05 13:34:00) [1]
на их общей прямой, по которой они содиняются, пробегают точки такого же цвета, что и фон
Скорее всего, это ощибки растеризации из-за недостаточной точности Single. Дело даже не в Single, а в плавающей точке вообще - практически невозможно получить два действительно одинаковых числа. Размеры тут ни при чём.
Кстати, как рисуются? Рекомендую рисовать strip"ом или fan"ом, тогда этот эффект должен (вроде бы) уменьшиться. Естественно, помогает антиалиасинг - full-screen или вывести те же треугольники ещё раз как wireframe. Можно, если Z-буфер выключен, немного сдвинуть треугольники внутрь друг друга. Если Z-буфер включён, то он сам может быть источником проблемы. То же самое - не хватает точности. Нужно выключить или использовать W-буфер.
создают уровень размером в несколько единиц и масшатабируют его вместе с находящимися на нем моделями или создают большой уровень?
Можно и так, и так. Но если использовать большие числа, можно обойтись целыми (потому что см. ранее). Для полного счастья (эффективности) их ещё следует округлять по степеням двойки (в инструкции к Serious Sam читал).
lokid7 (2003-08-04 08:28:00) [2]
Ну кто-нибудь ответьте, plz