DirectX9 SDK Samples(20) MeshFromObj Sample
来源:互联网 发布:激光切割机怎么编程 编辑:程序博客网 时间:2024/06/04 18:18
从obj文件读入网格信息,组成网格。
首先看一下MeshLoader的代码。
1.Create
创建网格,首先是调用LoadGeometryFromOBJ,这个函数主要用来读入网格的几何信息,例如顶点、法线等等
for(; ; ) { InFile >> strCommand; if( !InFile ) break; if( 0 == wcscmp( strCommand, L"#" ) ) { // Comment } else if( 0 == wcscmp( strCommand, L"v" ) ) { // Vertex Position float x, y, z; InFile >> x >> y >> z; Positions.Add( D3DXVECTOR3( x, y, z ) ); } else if( 0 == wcscmp( strCommand, L"vt" ) ) { // Vertex TexCoord float u, v; InFile >> u >> v; TexCoords.Add( D3DXVECTOR2( u, v ) ); } else if( 0 == wcscmp( strCommand, L"vn" ) ) { // Vertex Normal float x, y, z; InFile >> x >> y >> z; Normals.Add( D3DXVECTOR3( x, y, z ) ); } else if( 0 == wcscmp( strCommand, L"f" ) ) {上面的是LoadGeometryFromOBJ的主体,可以看到该函数根据读到的字符来进行不同的操作。这里只是贴出了一小部分。
// If an associated material file was found, read that in as well. if( strMaterialFilename[0] ) { V_RETURN( LoadMaterialsFromMTL( strMaterialFilename ) ); }函数的最后还把MTL文件(材质定义文件)载入了(有的话)。
下面回到Create函数。接下来就该读入MTL文件中网格用到的材质了。
读完材质就可以开始构造网格了。
// Create the encapsulated mesh ID3DXMesh* pMesh = NULL; V_RETURN( D3DXCreateMesh( m_Indices.GetSize() / 3, m_Vertices.GetSize(), D3DXMESH_MANAGED | D3DXMESH_32BIT, VERTEX_DECL, pd3dDevice, &pMesh ) );
- DirectX9 SDK Samples(20) MeshFromObj Sample
- DirectX9 SDK Samples(20) HDRDemo Sample(1)
- DirectX9 SDK Samples(20) HDRDemo Sample(2)
- DirectX9 SDK Samples(20) HDRDemo Sample(3)
- DirectX9 SDK Samples(7) EmptyProject Sample
- DirectX9 SDK Samples(8) BasicHLSL Sample(1)
- DirectX9 SDK Samples(8) BasicHLSL Sample(2)
- DirectX9 SDK Samples(9) Text3D Sample
- DirectX9 SDK Samples(10) HLSLwithoutEffects Sample
- DirectX9 SDK Samples(11) CompiledEffect Sample
- DirectX9 SDK Samples(12) CustomUI Sample
- DirectX9 SDK Samples(14) EffectParam Sample(1)
- DirectX9 SDK Samples(14) EffectParam Sample(2)
- DirectX9 SDK Samples(15) OptimizedMesh Sample
- DirectX9 SDK Samples(17) StateManager Sample
- DirectX9 SDK Samples(21) HDRCubeMap Sample
- DirectX9 SDK Samples(23) HDRFormats Sample
- DirectX9 SDK Samples(24) HDRLighting Sample
- 自己写的一个遮罩层插件
- ORA-01654: unable to extend index
- 用mina进行文件传输
- Pycassa 起步——python 与 cassandra
- 常用Emacs命令整理
- DirectX9 SDK Samples(20) MeshFromObj Sample
- 上传图片
- 网页设计中常见的错误
- 【Android 开发教程】TableLayout表格布局
- 中国市场Android终端App兼容性质量报告
- Kid's Poetries
- PLS-00103: Encountered the symbol "CREATE"
- AutoCompleteTextView输入汉字拼音首字母实现过滤提示(支持多音字,Filterable的使用)
- C++ primer第二次阅读学习笔记(第7章:函数)