Files
assimp/samples/SimpleTexturedDirectx11/SimpleTexturedDirectx11/ModelLoader.h
Eric Wasylishen ee8d1b0417 SimpleTexturedDirectx11: embedded texture loading fixes
- remove assumption that embedded texture names start with "*0", etc.
- rename ModelLoader::getTextureFromModel() to loadEmbeddedTexture()
- support loading uncompressed embedded textures

Fixes display of bullsquid.mdl from Half-Life (which has an
embdedded texture named "bottommap.bmp")
2021-04-24 14:13:51 -06:00

43 lines
1002 B
C++

#ifndef MODEL_LOADER_H
#define MODEL_LOADER_H
#include <vector>
#include <d3d11_1.h>
#include <DirectXMath.h>
#include <assimp\Importer.hpp>
#include <assimp\scene.h>
#include <assimp\postprocess.h>
#include "Mesh.h"
#include "TextureLoader.h"
using namespace DirectX;
class ModelLoader
{
public:
ModelLoader();
~ModelLoader();
bool Load(HWND hwnd, ID3D11Device* dev, ID3D11DeviceContext* devcon, std::string filename);
void Draw(ID3D11DeviceContext* devcon);
void Close();
private:
ID3D11Device *dev_;
ID3D11DeviceContext *devcon_;
std::vector<Mesh> meshes_;
std::string directory_;
std::vector<Texture> textures_loaded_;
HWND hwnd_;
void processNode(aiNode* node, const aiScene* scene);
Mesh processMesh(aiMesh* mesh, const aiScene* scene);
std::vector<Texture> loadMaterialTextures(aiMaterial* mat, aiTextureType type, std::string typeName, const aiScene* scene);
ID3D11ShaderResourceView* loadEmbeddedTexture(const aiTexture* embeddedTexture);
};
#endif // !MODEL_LOADER_H