создает две текстуры. Данный код связывает число 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.