请教Direct3D高手:我现在想把一个x文件的模型渲染出来,文件中只有点的坐标,以及三角形数据,没有材质和纹理。我照书上的方法写了加载程序,程序可以渲染出tiger.x,但是显示不了我的那个文件(我的这个文件可以用MeshView正常显示的),显示效果一块白布。我不会D3D编程啊,但是现在要用,只要能显示出来看见三维物体就行。多谢。文件大致内容:
  xof 0302txt 0064
Header {
 1;
 0;
 1;
}
Frame Hull {
        FrameTransformMatrix{
             0.0600000, 0.000000, 0.000000, 0.000000, 
             0.000000,  0.060000, 0.000000, 0.000000,
             0.000000, 0.000000, 0.060000, 0.000000, 
             0.000000, 0.000000, 0.000000, 1.000000;;
}
Mesh Tooth {15096;
   0.000000; 0.000000; 20.000000;,
   0.150000; 0.000000; 20.000000;,
   0.300000; 0.000000; 20.000000;,
   0.450000; 0.000000; 20.000000;,
   0.600000; 0.000000; 20.000000;,
   0.750000; 0.000000; 20.000000;,
   0.900000; 0.000000; 20.000000;,
   1.050000; 0.000000; 20.000000;,
   1.200000; 0.000000; 20.000000;,
……
 16.200000; 20.250000; 10.375000;,
   16.350000; 20.250000; 10.550000;,
   16.500000; 20.250000; 10.625000;;
# define faces...
29700;
   3;0,111,1;,
   3;1,111,112;,
   3;1,112,2;,
   3;2,112,113;,
……  3;14981,15091,15092;,
   3;14981,15092,14982;,
   3;14982,15092,15093;,
   3;14982,15093,14983;,
   3;14983,15093,15094;,
   3;14983,15094,14984;,
   3;14984,15094,15095;;
}
}

解决方案 »

  1.   

    你是说用MeshView这个dx自带的工具可以显示, 但是在你的自己的程序里面显示不正确
    而你的程序又可以正确的显示tiger.x这个dx自带的文件是吗
    如果是这样,最大的可能性就是你的x文件对应的纹理文件没有找到, 系统自动用白色替代了纹理x文件是可以包含材质和纹理的(不是纹理图, 是纹理文件名称)tiger.x当中同样是有材质和纹理的,无非是他们放在了dxsdk的公共目录当中
    而你自己建立的x文件,纹理应该是有单独的路径的把你的x文件输出成为文本格式,然后在里面搜索material关键词, 找texture字段, 可以找到对应的纹理文件名
    根据输出x文件的工具不同, 有的是有绝对路径,有的是相对路径的
    要对比的看, 怀疑你的是相对的路径,按照对应的关系,把纹理和x文件放好简单的解决方案是你把x文件和所需要的纹理都放在一起, 把x文件里面的相对路径都去掉,只保留纹理文件名字