Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DirectX. Продвинутая Анимация (2004) [rus].pdf
Скачиваний:
335
Добавлен:
16.08.2013
Размер:
8.39 Mб
Скачать

Использование формата файла .X

template OpenTemplate { <4C9D055B-C64D-4bff-A7D9-981F507E45FF> DWORD OpenData;

[...]

}

template RestrictedTemplate { <4C9D055B-C64D-4c00-A7D9-981F507E45FF> DWORD RestrictedData;

[ClosedTeMplate]

[OpenTemplate]

}

Это стандартное объявление шаблонов, за исключением строк, содержащих квадратные скобки. Информация, содержащаяся в этих скобках очень важна. Первый шаблон, "ClosedTemplate", не имеет квадратных кавычек, так что он считается закрытым. Вы можете создавать и определять значение "ClosedData" только внутри "ClosedTemplate".

Вто время как "OpenTemplate" содержит строку "[...]", которая означает что шаблон открытый. Открытый шаблон позволяет вставить любой объект вместо строки "[...]". Например, вы можете создать "OpenTemplate", определить переменную "OpenData" и вставить экземпляр объекта "ClosedTemplate" в "OpenTemplate".

В"RestrictedTemplate" имеется две строки со скобками. Ограничение шаблонов позволяет вставлять шаблоны только указанного типа; в данном случае ими являются "ClosedTemplate" и "OpenTemplate". Попытка вставить объект любого другого типа закончится неудачей (вызывая завершение работы анализатора).

Гмм, возможно вам придется перечитать этот раздел несколько раз, прежде чем вы поймете механизм вставки ограниченных шаблонов в другие шаблоны. Как только вы убедитесь, что твердо усвоили вышеизложенный материал, можно переходить к изучению стандартных шаблонов DirectX, которые поставляются

сDirectX SDK.

Работа со стандартными шаблонами DirectX

После того как вы познакомились с шаблонами и объектами данных, пришло время рассмотреть, как можно использовать их в своих проектах. Если вы уже знакомы с DirectX SDK, то заметили, что .X файлы широко используются для хранения информации о меше. Поэтому Microsoft снабдила DirectX некоторым количеством шаблонов, которые я называю: стандартные шаблоны DirectX. Эти шаблоны используются для хранения информации, связанной с мешами.

Использованиеформатафайла.X

93

 

 

Таблица 3.2. Стандартные шаблоны DirectX

 

 

 

 

Имя шаблона

Описание

 

 

 

 

MeshMaterialList

Содержит список материалов меша

 

 

 

 

MeshNormals

Содержит нормали, используемые мешем

 

 

 

 

MeshTextureCoords

Содержит текстурные координаты, используемые мешем

 

 

 

 

MeshVertexColors

Содержит информацию о цвете вершин меша

 

 

 

 

Patch

Определяет управляющую сетку

 

 

 

 

PatchMesh

Содержит сеточный меш (совсем как шаблон "Mesh")

 

 

 

 

Quaternion

Содержит значение кватерниона

 

 

 

 

SkinWeights

Содержит массив весов, накладываемых на вершины меша.

 

 

Используется для скелетных мешей

 

 

 

 

TextureFilename

Содержит имя текстуры, используемой в материале

 

 

 

 

TimedFloatKeys

Содержит массив шаблонов "FloatKeys"

 

 

 

 

Vector

Содержит координаты трехмерной точки

 

 

 

VertexDuplicationIndices

Сообщает, что вы хотите скопировать вершины из других вершин

 

 

 

XskinMeshHeader

Используется скелетным мешем для определения количества

костей

 

 

 

Вы видите, что стандартных шаблонов много - слишком много, чтобы обсуждать их в этой книге. К счастью, вы обнаружите, что вам придется иметь дело с небольшим количеством стандартных шаблонов при анализировании .X файлов. Вы поймете о каких шаблонах я говорю, когда дочитаете книгу. А теперь, давайте продолжим, рассмотрев, как получить доступ к .X файлам в ваших проектах.

Доступ к .Xфайлам

Независимо от используемой версии DirectX (DirectX 8 или 9), методы, применяемые для доступа к .X файлам, одинаковы. На самом деле интерфейсы имеют одинаковые имена в последних версиях DirectX (8 и 9), что делает возможным быстро переносить ваш код версии 8 в новую версию 9 (и наоборот, если необходимо).

Первым шагом к получению доступа к .X файлам является создание интерфейса "IDirectXFile". Для этого вам необходимо вызвать функцию "DirectXFileCreate", как показано в следующем кусочке кода:

Соседние файлы в предмете Программирование на C++