请教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;;
}
}
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;;
}
}
解决方案 »
- VC++中如何自制程序运行结果显示界面???
- 创建OpenGL线程
- recv到网页数据的查找问题
- 如何实现对u盘物理扇区的写操作?
- Matlab的COM组件与VC
- 各位用VC的什么版本(主要是各位职业程序员)?
- win32平台如何调用16位的DLL?
- 关于两程序运行
- Installshield打包的安装包如何编辑
- 为什么没有人回答关于用VC++写report的方法,我已经查了两遍,请教各位VC是否有类似VB的CRYSTAL report or report的自动报表功能?
- 请教一个不同显卡用DirectDraw显示RGB/YUV图像的问题
- mfc activex控件,创建工程时选择button子类,我如何更改button的显示?
而你的程序又可以正确的显示tiger.x这个dx自带的文件是吗
如果是这样,最大的可能性就是你的x文件对应的纹理文件没有找到, 系统自动用白色替代了纹理x文件是可以包含材质和纹理的(不是纹理图, 是纹理文件名称)tiger.x当中同样是有材质和纹理的,无非是他们放在了dxsdk的公共目录当中
而你自己建立的x文件,纹理应该是有单独的路径的把你的x文件输出成为文本格式,然后在里面搜索material关键词, 找texture字段, 可以找到对应的纹理文件名
根据输出x文件的工具不同, 有的是有绝对路径,有的是相对路径的
要对比的看, 怀疑你的是相对的路径,按照对应的关系,把纹理和x文件放好简单的解决方案是你把x文件和所需要的纹理都放在一起, 把x文件里面的相对路径都去掉,只保留纹理文件名字