понимание форматов буфера z прямой х - PullRequest
0 голосов
/ 14 апреля 2010

Z-буфер - это просто трехмерный массив, который показывает, какой объект должен быть записан перед другим объектом. каждый элемент в массиве представляет пиксель, который содержит значение от 0,0 до 1,0. Мой вопрос: если это все, что делает z-буфер, то почему некоторые буферы 24-битные, 32-битные и 16-битные?

1 Ответ

2 голосов
/ 14 апреля 2010

Z-буфер не является трехмерным массивом.Это 2D массив, который имеет значение в каждом пикселе.Это значение представляет глубину последнего пикселя, записанного в эту позицию.

Если ожидающий пиксель имеет глубину, которая находится позади текущего значения в Z-буфере, пиксель не виден и поэтому пропускается.Это то, что позволяет отображать объекты в любом порядке: пиксель позади не перезаписывает пиксель впереди;они будут отброшены.

Дело в том, что значение имеет разную точность.Вот где вступают биты. 16-битный Z-буфер занимает вдвое меньше памяти, чем 32-битный Z-буфер, но не может представлять тот же диапазон.

Память не совсем дешевая (ну, этоменяется, но все же), поэтому, если вам не нужна большая точность, используйте 16-битную и сохраняйте память.(Это было более важно в прошлом, когда памяти действительно было мало.)

Попытка сохранить слишком много значений в буфере, который не может их удержать, приведет к их объединению (16,5 и 15,5 оба становятся 16,например), и вы получите артефакты.

...