Наиболее интенсивно внутренние буферы используются при тонировании изображения поверхностей. Возможности моделирования объектов набором геометрических примитивов и воспроизведения образов этих примитивов на экране отнюдь не беспредельны. Предположим, что нужно изобразить на экране апельсин. Первое, что приходит в голову,- сформировать сферу примерно так, как это было сделано в главе 6. В результате будет сформирована аппроксимация сферической поверхности множеством маленьких треугольников, затем эту аппроксимированную поверхность можно "пропустить" через один из уже известных нам алгоритмов тонирования. Но вряд ли вас устроит результат - полученное изображение апельсина очень легко будет принять за изображение баскетбольного мяча, - слишком уж "правильный" получится апельсин. Такого в супермаркете не увидишь. Можно поступить по-другому. В главе 10 рассказывается о том, как создавать поверхности нерегулярной формы, представляющие собой случайные искажения правильной формы. Описанные в ней методы дают программисту возможность контролировать нерегулярности формы объекта, и полученное изображение уже не спутаешь с мячом, но на настоящий апельсин оно тоже будет походить мало. В главе 11 описаны еще более сложные методы внесения нерегулярностей, но использовать их в графических системах широкого применения (не супербыстродействующих) довольно затруднительно, поскольку, в конце концов, все они сводятся к усложнению трехмерной модели объекта- возрастанию количества треугольных граней, аппроксимирующих поверхность объекта.

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


⇐ Предыдущая| |Следующая ⇒