template Header {
<3D82AB43-62DA-11cf-AB39-0020AF71E433>
WORD major;
WORD minor;
DWORD flags;
}

template Vector {
<3D82AB5E-62DA-11cf-AB39-0020AF71E433>
FLOAT x;
FLOAT y;
FLOAT z;
}

template Coords2d {
<F6F23F44-7686-11cf-8F52-0040333594A3>
FLOAT u;
FLOAT v;
}

.......

==================================================

Mesh Body1 {
303;                                         //下面点(r,g,b)的个数
0.000000;-0.061426;0.938846;,
-0.049693;0.200773;0.692165;,

.....

599;              //下面点的个数,奇怪的是为什么这里是599 不是303?难道是有些点vertice 没有material
3;300,301,302;,
3;299,300,302;,
3;298,300,299;,

}

*******由于迷惑不解我就去查了一下,原来我完全理解错了。303是顶点个数 599是面数。303下面的是顶点坐标根本不是rgb

599下面是前面303个顶点的索引*******

http://wenku.baidu.com/link?url=CYKd7-nGeu3msat2AVXmHoWv5foNt7R4IdeBBGYEBzEVm71860wrzLPoi6YkNMFJQZ-azPaePsaRkHvahgnHOSJXy3fXZTybWEujMW3gLV_

这里讲的很详细了

MeshMaterialList {
1;
1;
0;;
Material {
0.694118;0.694118;0.694118;1.000000;;//face color
50.000000;                //power
1.000000;1.000000;1.000000;;      //specular color
0.000000;0.000000;0.000000;;      //emissive color
TextureFilename {
"tiger.bmp";
}
}
}

MeshTextureCoords {
303;                              //下面点(u,v)的个数
0.190860;-0.544059;,
0.272086;-0.355992;,
0.077337;-0.522561;,

}

===========================================

开始是一堆类型定义

之后是一堆数据

mesh body 就是material 和 vertice 两部分(我猜的)猜错了。。。

mesh body是点和面

MeshMaterialList是material

MeshTextureCoords就是顶点的uv坐标了

我产生这种错觉是因为

render mesh的时候的代码 看起来都没有画vertices的

VOID Render()
{
// Clear the backbuffer and the zbuffer
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
D3DCOLOR_XRGB( 0, 0, 255 ), 1.0f, 0 );

// Begin the scene
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
// Setup the world, view, and projection matrices
SetupMatrices();

// Meshes are divided into subsets, one for each material. Render them in
// a loop
for( DWORD i = 0; i < g_dwNumMaterials; i++ )
{
// Set the material and texture for this subset
g_pd3dDevice->SetMaterial( &g_pMeshMaterials[i] );
g_pd3dDevice->SetTexture( 0, g_pMeshTextures[i] );

// Draw the mesh subset
g_pMesh->DrawSubset( i );
}

// End the scene
g_pd3dDevice->EndScene();
}

找来找去 既然setMaterial 和setTexture都是字面的意思

那就只能是DrawSubset做得了

跟进去看的时候 发现一个interface的实现

mesh material drawsubset什么的都用到了这个方法

#define DECLARE_INTERFACE_(iface, baseiface)            interface DECLSPEC_NOVTABLE iface : public baseiface

DECLARE_INTERFACE_(ID3DXMesh, ID3DXBaseMesh)
{
// IUnknown
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;

#define STDMETHOD(method)        virtual COM_DECLSPEC_NOTHROW HRESULT STDMETHODCALLTYPE method

这样写读起来还真麻烦,一堆宏的缩写。

翻译过来其实就是

interface DECLSPEC_NOVTABLE ID3DXMesh :public ID3DxBaseMesh

{

virtual COM_DECLSPEC_NOTHROW HRESULT STDMETHODCALLTYPE QueryInterface(THIS_ REFIID iid, LPVOID *ppv) PURE;

这个继承实现的是interface的功能。。。。。除了翻译这些里面还有一堆宏。。。。

总之g_pMesh->DrawSubset( i );这个句画出了模型。。dx不开源

DX 的.x 文件的更多相关文章

  1. eclipse升级Android SDK Tool版本到25.2.5后运行项目报错Unable to build: the file dx.jar was not loaded from the SDK folder

    概述 由于最近通过SDK-Manager更新了build-tools,当要用到dx.jar这个包时,自动调用最新版本Android SDK build-tools中dx.jar,但是运行android ...

  2. Unable to build: the file dx.jar was not loaded from the SDK folder

    eclipse 运行 android 时失败了,提示 Unable to build: the file dx.jar was not loaded from the SDK folder! 解决办法 ...

  3. 我的Android第四章

    本章需掌握 1.连接真机的过程. 2.dx指令的作用 3.adb是什么? 4.adb有什么用(有什么好处)? 5.adb的一些常用命令 1.连接真机的过程. 需要:一部Android机.usb连接线, ...

  4. [Android Pro] Android以root起一个process[shell脚本的方法]

    reference to :  http://***/Article/11768 有时候我们写的app要用uid=0的方式启动一个process,framework层和app层是做不到的,只有通过写脚 ...

  5. 汇编int21h,DOS调用(转)

    表:DOS系统功能调INT 21H AH 功能 调用参数 返回参数 00 程序终止(同INT 20H) CS=程序段前缀 01 键盘输入并回显 AL=输入字符 02 显示输出 DL=输出字符 03 异 ...

  6. DOS系统功能调用表(INT 21H)

    AH 功能 调用参数 返回参数 00 程序终止(同INT 20H) CS=程序段前缀 01 键盘输入并回显 AL=输入字符 02 显示输出 DL=输出字符 03 异步通迅输入 AL=输入数据 04 异 ...

  7. [翻译.每月一译.每日一段]Exploring Fonts with DirectWrite and Modern C++

    Windows with C++ Exploring Fonts with DirectWrite and Modern C++ Kenny Kerr DirectWrite is an incred ...

  8. int21 h

    表:DOS系统功能调INT 21H AH 功能 调用参数 返回参数 00 程序终止(同INT 20H) CS=程序段前缀 01 键盘输入并回显 AL=输入字符 02 显示输出 DL=输出字符 03 异 ...

  9. [转]把项目从VS2005升级到VS2013

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://rangercyh.blog.51cto.com/1444712/1394348 ...

随机推荐

  1. iPad accessory communication through UART

    We manufacture a new accessory for iPad/iPhone which should transfer commands to the iPad. We like t ...

  2. sql常识-IN 操作符

    IN 操作符 IN 操作符允许我们在 WHERE 子句中规定多个值. SQL IN 语法 SELECT column_name(s) FROM table_name WHERE column_name ...

  3. sqlserver 公有表达式

    了解通用表达式: 为了让代码简洁:在一个查询中引用另外的结果集都是通过视图而不是子查询来进行分解,但是视图是系统级对象,如果数据集仅仅需要在存储过程或是自定义函数中使用一次的话,使用view有些奢侈哈 ...

  4. xenserver 备份backup和还原restore命令

      转载:http://zhumeng8337797.blog.163.com/blog/static/100768914201425103713738/ 1. 备份和还原pool中的metadata ...

  5. javascript中常用的一些功能及正则表达式的用法

    一.取得地址栏后的参数 /** * 假设地址栏url为:login.do?username = "这里中文的话会是特殊字符组成的" */ //定义一个取得参数值的函数 functi ...

  6. Javascript中while和do-while循环用法详解

    while循环 while 语句与 if 语句相似,都有条件来控制语句(或语句块)的执行,其语言结构基本相同:while(conditions){    statements;} while 语句与 ...

  7. Cocos2d-x加速度计

    加速度计是一种能够感应设备一个方向上线性加速度的传感器.广泛用于航空.航海.宇航及武器的制导与控制中.线加速度计的种类很多,在iOS等移动设备中目前采用的是三轴加速度计,可以感应设备上X.Y.Z轴方向 ...

  8. 关于css3 中filter的各种特效

    做项目时遇到了一个有趣的css特效. 目前各大浏览器对于css3的兼容已经非常好了,最新版本都可以支持css3,老版本的ie9以下的还是不支持,不过这不是重点,微软都准备放弃这些老古董了. 现在规范中 ...

  9. css3学习笔记之边框

    CSS3 圆角 border-radius 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <!DOCTYPE html> <h ...

  10. Visual Studio 2015和.Net 2015 预览版在线安装和ISO镜像安装光盘下载

    微软刚刚宣布了 Visual Studio 2015和.Net 2015 预览版,并同时提供了下载. 微软在纽约正进行中的#Connect# 全球开发者在线大会上宣布了Visual Studio 20 ...