создает две текстуры. Данный код связывает число 5 (вместе с четырьмя параметрами) с масштабированным кубом, а число 2 (вместе с тремя параметрами) со сферой. (Вопрос о том, как в действительности эта текстура накладывается на объект, оставляется, конечно, на усмотрение программиста.)

Д2. Макросы в SDL

Для удобства вводится ключевое слово def, которое позволяет объединять любое количество команд SDL в макрос и присваивать им единое имя. Команды SDL, образующие тело макроса, заключаются в скобки. Например, команда

def red {ambient 10 0 diffuse 10 0}

связывает макрос под именем red с заключенными в скобки словами. Если в SDL-файле позднее встретится команда

use red
1044

Приложение Д. Введение в SDL

то в данном месте будет помещена фраза ambient 10 0 diffuse 1 0 0 , как если бы вы ее набрали в этом месте файла. Макросы позволяют сократить набор и допускают повторное использование определений. Например, стек в форме символа «L» из четырех кубов можно определить посредством следующего кода:

def Lstack {push cube translate 2 0 0 cube translate -2 2 0 cube translate 0 2 0 cube pop}

Этот макрос можно позднее использовать для помещения на сцене символов L различной формы. Код для этого может выглядеть, например, так:

use Lstack
push translate 3 2 4 scale .5 .5 .5 use Lstack pop push translate -3 -2 -4 scale .5 .5 .5 use Lstack pop

ДЗ. Расширение SDL

К SDL нетрудно добавлять новые ключевые слова. С помощью двух примеров мы опишем, как это делается.

Пример Д3.1. Добавление атрибута к сценам Допустим, что вы хотите добавить к классу Scene новое поле fogThickness, которое описывает плотность (thickness) тумана (fog) на сцене. Для управления этой величиной, помещаемой в данном поле, можно добавить к языку SDL ключевое слово с именем fogginess (туманность). Фраза

fogginess 0.5

в SDL-файле будет выставлять в 0,5 значение fogThickness. Чтобы довести это до конца, проделайте следующие изменения.

О Изменения в SDL-файле с расширением . h.

1. Добавьте в класс Scene поле float fogThickness.


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