青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當自強而不息

Using the .X File Format(3)

Embedding Data Objects and Template Restrictions

Data referencing has one caveat−the template restrictions set in place must allow you to use a reference. That might not make sense at first, but you can't use a data reference without the proper restrictions. An .X file represents an entire hierarchy of data objects, which can only be siblings or children of other objects. Thus, data objects embedded in other objects need the proper restrictions to be referenced or instanced. For example, consider the following three template declarations:

template ClosedTemplate {
  <4C9D055B−C64D−4bfe−A7D9−981F507E45FF>
  DWORD ClosedData;
}

template OpenTemplate {
  <4C9D055B−C64D−4bff−A7D9−981F507E45FF>
  DWORD OpenData;
  [...]
}

template RestrictedTemplate {
  <4C9D055B−C64D−4c00−A7D9−981F507E45FF>
  DWORD RestrictedData;
  [ClosedTemplate]
  [OpenTemplate]
}

They are pretty standard template declarations, except for the lines that contain square brackets. The information inside those square brackets is important. The first template, ClosedTemplate, doesn't have square brackets, so it is considered a closed template. You can only instance and define the ClosedData value inside ClosedTemplate.

The OpenTemplate, however, contains the [] line, which signifies that it is an open template. An open template allows any data object to be embedded in place of the [] line. For example, you can instance OpenTemplate, define the OpenData variable, and then embed an instance of ClosedTemplate within the OpenTemplate.

RestrictedTemplate has two lines of bracket text. Restricting templates only allow data objects of those template types listed; in this case, those templates are ClosedTemplate and OpenTemplate. Attempts to embed any other data object other than the two listed will fail (causing the parse to fail).

Whew−you might have to reread this section a few times to fully understand the ability to embed and restrict templates within other templates. Once you have a firm grasp on embedding and restricting, it's time to move on and learn about DirectX's pre−defined standard templates, which are packaged with the DirectX SDK.

 

Working with the DirectX Standard Templates

Now that you've worked your way through templates and data objects, you can move up a step and see what you can do with them in your project. If you've taken the time to play around with the DirectX SDK, you'll notice that .X is widely used for containing mesh information. To that end, Microsoft has packaged DirectX with a number of templates, which I call the DirectX standard templates. These templates are used to contain all mesh−related data.

The standard templates are useful because they define almost every aspect of 3D meshes, so take a moment to study them here.

The standard templates, shown in Table 3.2, each have a matching GUID macro that you use to determine which data object is which in your program. These macros are defined (using DEFINE_GUID) inside a special file named rmxfguid.h. The standard templates' GUID macros are easy to remember because you just prefix the template's name with D3DRM_TID. For instance, the Animation template is defined by the macro D3DRM_TIDAnimation.

 

Animation

Contains animations referencing a previous frame. It should contain one reference to a frame and at least one set of AnimationKey templates. It also can contain an AnimationOptions data object.

template Animation
{
< 3D82AB4F-62DA-11cf-AB39-0020AF71E433 >
[...]
}

Where:

  • [ ... ] - Any .x file template can be used here. This makes the architecture extensible.

AnimationKey

Defines a set of animation keys. A matrix key is useful for sets of animation data that need to be represented as transformation matrices.

template AnimationKey
{
< 10DD46A8-775B-11CF-8F52-0040333594A3 >
DWORD keyType;
DWORD nKeys;
array TimedFloatKeys keys[nKeys];
}

Where:

  • keyType - Specifies whether the keys are rotation, scale, position, or matrix keys (using the integers 0, 1, 2, or 3, respectively).
  • nKeys - Number of keys.
  • keys - An array of keys. See TimedFloatKeys.

AnimationOptions

Enables you to set animation options.

template AnimationOptions
{
< E2BF56C0-840F-11cf-8F52-0040333594A3 >
DWORD openclosed;
DWORD positionquality;
}

Where:

  • openclosed - Use 0 for a closed animation, or 1 for an open animation. By default, an animation is closed.
  • positionquality - Set the position quality for any position keys specified. Use 0 for spline positions or 1 for linear positions.

AnimationSet

Contains one or more Animation objects. Each animation within an animation set has the same time at any given point. Increasing the animation set's time increases the time for all the animations it contains.

template AnimationSet
{
< 3D82AB50-62DA-11cf-AB39-0020AF71E433 >
[ Animation < 3D82AB4F-62DA-11cf-AB39-0020AF71E433 > ]
}

Where:

  • [ Animation < 3D82AB4F-62DA-11cf-AB39-0020AF71E433 > ] - Optional animation template.

Boolean

Defines a simple Boolean type.

template Boolean
{
< 537da6a0-ca37-11d0-941c-0080c80cfa7b >
DWORD truefalse;
}

Where:

  • truefalse - True for a Boolean, false otherwise.

Boolean2d

Defines a set of two Boolean values used in the MeshFaceWraps template to define the texture topology of an individual face.

template Boolean2d
{
< 4885AE63-78E8-11cf-8F52-0040333594A3 >
Boolean u;
Boolean v;
}

Where:

  • u - Boolean value. See Boolean.
  • v - Boolean value. See Boolean.

ColorRGB

Defines the basic RGB color object.

template ColorRGB
{
< D3E16E81-7835-11cf-8F52-0040333594A3 >
float red;
float green;
float blue;
}

ColorRGBA

Defines a color object with an alpha component. This is used for the face color in the material template definition.

template ColorRGBA
{
< 35FF44E0-6C7C-11cf-8F52-0040333594A3 >
float red;
float green;
float blue;
float alpha;
}

Coords2d

Defines a two dimensional vector used to define a mesh's (u, v) texture coordinates.

template Coords2d
{
< F6F23F44-7686-11cf-8F52-0040333594A3 >
float u;
float v;
}
  • u - u coordinate value.
  • v - v coordinate value.

FloatKeys

Defines an array of floating-point numbers (floats) and the number of floats in that array. This is used for defining sets of animation keys.

template FloatKeys
{
< 10DD46A9-775B-11cf-8F52-0040333594A3 >
DWORD nValues;
array float values[nValues];
}
  • nValues - Number of floats.
  • values[nValues] - Array of float values.

FrameTransformMatrix

Defines a local transform for a frame (and all its child objects).

template FrameTransformMatrix
{
< F6F23F41-7686-11cf-8F52-0040333594A3 >
Matrix4x4 frameMatrix;
}

Where:

  • frameMatrix - A Matrix4x4 template.

Frame

Defines a coordinate frame, or "frame of reference." The Frame template is open and can contain any object. The D3DX mesh-loading functions recognize Mesh, FrameTransformMatrix, and Frame template instances as child objects when loading a Frame instance.

template Frame
{
< 3D82AB46-62DA-11CF-AB39-0020AF71E433 >
[...]
}

The frame template recognizes child Frame and Mesh nodes inside a frame and can recognize user-defined templates through a callback function.


posted on 2008-04-16 19:56 lovedday 閱讀(434) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩精品免费观看视频完整 | 久久综合影音| 麻豆久久久9性大片| 亚洲欧美在线aaa| 欧美极品色图| 亚洲电影免费在线| 国产日韩欧美综合在线| 亚洲人成在线影院| 91久久久久| 久久久久久9| 久久青青草综合| 国产精品一页| 亚洲女人天堂成人av在线| 一区二区三区 在线观看视| 猛男gaygay欧美视频| 久久婷婷av| 精品福利免费观看| 久久久91精品国产| 久久全国免费视频| 国产在线视频欧美| 欧美一区二区日韩| 欧美一区高清| 国产区亚洲区欧美区| 亚洲午夜在线| 欧美一区高清| 国产日韩精品视频一区二区三区| 亚洲无限乱码一二三四麻| 欧美在线一二三区| 欧美在线免费观看视频| 国产欧美激情| 久久精品国产免费| 久久综合九色99| 伊人春色精品| 免费在线日韩av| 亚洲精品欧美一区二区三区| 99v久久综合狠狠综合久久| 欧美激情综合| 亚洲视频免费| 久久久www成人免费精品| 红桃视频欧美| 免费一级欧美片在线播放| 亚洲精品久久| 欧美一区二区免费| 在线观看精品视频| 欧美高清视频www夜色资源网| 亚洲激情小视频| 亚洲欧美日韩综合一区| 国产一区二区精品久久91| 久久视频免费观看| 亚洲毛片一区二区| 欧美在线免费观看亚洲| 亚洲国产裸拍裸体视频在线观看乱了中文 | 99ri日韩精品视频| 欧美一级专区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲一区日韩在线| 免费精品视频| 亚洲午夜一区二区| 国产亚洲制服色| 欧美成人精品三级在线观看 | 亚洲电影免费| 午夜精品区一区二区三| 在线观看亚洲一区| 欧美少妇一区| 久久精品国产亚洲精品| 亚洲欧洲日韩女同| 久久免费视频在线观看| 日韩视频久久| 国精产品99永久一区一区| 欧美成人精品不卡视频在线观看| 亚洲尤物视频在线| 亚洲福利国产精品| 久久久999精品| 一区二区三区精品| 亚洲成色最大综合在线| 国产精品福利久久久| 巨胸喷奶水www久久久免费动漫| 一区二区欧美激情| 欧美激情一区在线| 久久久久久综合| 亚洲在线免费观看| 亚洲精品一区二区三区不| 国内精品视频在线观看| 国产精品久久久久国产a级| 欧美xx69| 久久福利资源站| 亚洲欧美成人在线| 99精品视频免费| 欧美激情一区二区三区蜜桃视频| 久久精品视频一| 校园春色综合网| 亚洲午夜女主播在线直播| 亚洲人成网站在线播| 在线免费观看日韩欧美| 国产亚洲欧美日韩一区二区| 欧美午夜电影在线| 欧美另类高清视频在线| 麻豆精品视频在线| 久久夜色撩人精品| 久久久久欧美精品| 久久精品人人做人人爽| 欧美亚洲一级| 午夜视频久久久| 亚洲欧美日韩爽爽影院| 亚洲一区二区三区免费视频 | 亚洲高清不卡av| 欧美成人一区二免费视频软件| 欧美综合国产精品久久丁香| 亚洲欧美一区二区视频| 亚洲欧美日韩国产综合在线| 一区二区三区精密机械公司| 亚洲精品久久久久久久久| 亚洲欧洲日夜超级视频| 亚洲国产精品一区二区久| 精品成人久久| 亚洲国产精品第一区二区| 亚洲高清视频在线观看| 亚洲日本成人网| 99精品热视频只有精品10| 亚洲美女视频在线免费观看| 99精品99| 亚洲综合99| 久久精品观看| 欧美jizz19性欧美| 亚洲日本黄色| 中文国产亚洲喷潮| 香蕉久久夜色精品| 久久天天狠狠| 欧美国产三级| 国产精品你懂的| 激情综合自拍| 日韩一二三区视频| 午夜精品亚洲一区二区三区嫩草| 久久精品国产91精品亚洲| 欧美成人官网二区| 亚洲美女黄色片| 亚洲欧美三级伦理| 久久婷婷麻豆| 国产精品成人一区| 精品9999| 亚洲欧美成人| 久久综合久色欧美综合狠狠| 亚洲国产高清高潮精品美女| av成人黄色| 久久精品99国产精品| 欧美精品亚洲精品| 国产欧美不卡| 9l国产精品久久久久麻豆| 香蕉久久夜色| 亚洲激情国产| 欧美一区中文字幕| 欧美日韩视频一区二区| 国内揄拍国内精品少妇国语| av成人毛片| 久久国产精品色婷婷| 亚洲人成小说网站色在线| 午夜欧美大片免费观看| 欧美精品色综合| 狠狠色综合一区二区| 亚洲图片在区色| 欧美国产日韩一二三区| 亚洲欧美变态国产另类| 欧美日韩p片| 亚洲福利视频二区| 欧美一区二区精品久久911| 亚洲欧洲一级| 狼人天天伊人久久| 国产日产欧产精品推荐色| 亚洲最黄网站| 欧美激情2020午夜免费观看| 欧美一区二区精品久久911| 欧美日韩精品国产| 亚洲精品乱码久久久久久按摩观| 久久精品五月婷婷| 亚洲你懂的在线视频| 欧美日韩国产综合视频在线| 亚洲国产裸拍裸体视频在线观看乱了| 欧美亚洲一区二区三区| 一本色道久久88综合亚洲精品ⅰ | 欧美一级片久久久久久久| 亚洲日本va午夜在线电影| 久久只有精品| 黄色成人在线| 久久人人爽人人爽| 性欧美18~19sex高清播放| 国产精品乱子乱xxxx| 亚洲一区网站| 一级日韩一区在线观看| 欧美日韩福利在线观看| 亚洲精品国产拍免费91在线| 欧美成人亚洲| 美女日韩欧美| 亚洲精品乱码| 亚洲人体偷拍| 欧美日韩视频免费播放| 99视频国产精品免费观看| 亚洲精品久久久久中文字幕欢迎你| 欧美v国产在线一区二区三区| 亚洲国产精品嫩草影院| 欧美激情欧美激情在线五月|