ModelLoader.h 1002 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #ifndef MODEL_LOADER_H
  2. #define MODEL_LOADER_H
  3. #include <vector>
  4. #include <d3d11_1.h>
  5. #include <DirectXMath.h>
  6. #include <assimp\Importer.hpp>
  7. #include <assimp\scene.h>
  8. #include <assimp\postprocess.h>
  9. #include "Mesh.h"
  10. #include "TextureLoader.h"
  11. using namespace DirectX;
  12. class ModelLoader
  13. {
  14. public:
  15. ModelLoader();
  16. ~ModelLoader();
  17. bool Load(HWND hwnd, ID3D11Device* dev, ID3D11DeviceContext* devcon, std::string filename);
  18. void Draw(ID3D11DeviceContext* devcon);
  19. void Close();
  20. private:
  21. ID3D11Device *dev_;
  22. ID3D11DeviceContext *devcon_;
  23. std::vector<Mesh> meshes_;
  24. std::string directory_;
  25. std::vector<Texture> textures_loaded_;
  26. HWND hwnd_;
  27. void processNode(aiNode* node, const aiScene* scene);
  28. Mesh processMesh(aiMesh* mesh, const aiScene* scene);
  29. std::vector<Texture> loadMaterialTextures(aiMaterial* mat, aiTextureType type, std::string typeName, const aiScene* scene);
  30. ID3D11ShaderResourceView* loadEmbeddedTexture(const aiTexture* embeddedTexture);
  31. };
  32. #endif // !MODEL_LOADER_H