Адресация данных имеет один нюанс - ограничения шаблона должны позволять ее использовать. Сначала это может показаться неважным, но вы не можете использовать адресацию данных без корректных ограничений. .X файл представляет собой полную иерархию объектов, которые могут быть либо родственниками либо потомками других объектов. Поэтому для адресации и создания встроенных объектов необходимы корректные ограничения.
В качестве примера рассмотрите следующие три объявления шаблона:
template ClosedTemplate {
<4C9D0 55B-C6 4D-4bfe-A7D9-9 81F507E45FF> DWORD ClosedData;
template OpenTemplate {
<4C9D05 5B-C6 4D-4bff-A7D9-9 81F5 0 7E4 5FF> DWORD OpenData; [...]
}
template RestrictedTemplate {
<4C9D0 55B-C64D-4c0 0-A7D9-981F5 07E45FF> DWORD RestrictedData; [ClosedTeMplate] [OpenTemplate]
}
Это стандартное объявление шаблонов, за исключением строк, содержащих квадратные скобки. Информация, содержащаяся в этих скобках очень важна. Первый шаблон, "ClosedTemplate", не имеет квадратных кавычек, так что он считается закрытым. Вы можете создавать и определять значение "ClosedData" только внутри "ClosedTemplate".
В то время как "OpenTemplate" содержит строку "[...]", которая означает что шаблон открытый. Открытый шаблон позволяет вставить любой объект вместо строки "[...]". Например, вы можете создать "OpenTemplate", определить переменную "OpenData" и вставить экземпляр объекта "ClosedTemplate" в "OpenTemplate".
В "RestrictedTemplate" имеется две строки со скобками. Ограничение шаблонов позволяет вставлять шаблоны только указанного типа; в данном случае ими являются "ClosedTemplate" и "OpenTemplate". Попытка вставить объект любого другого типа закончится неудачей (вызывая завершение работы анализатора).
Гмм, возможно вам придется перечитать этот раздел несколько раз, прежде чем вы поймете механизм вставки ограниченных шаблонов в другие шаблоны. Как только вы убедитесь, что твердо усвоили вышеизложенный материал, можно переходить к изучению стандартных шаблонов DirectX, которые поставляются с DirectX SDK.
⇐Создание объектов данных из шаблонов || Оглавление || Работа со стандартными шаблонами DirectX⇒