I tried to write a texture manager that stopped textures being loaded more than once, but I've hit a slight snag.
The textures don't load at all, they get returned as NULL even though if the file doesn't exist, a "missing.dds" texture gets set.
here is the code that loads the textures:
LPDIRECT3DTEXTURE9 RenderSystem::getTexture(std::string filename)
{
std::ofstream outF("error.txt",std::ios_base::app);
std::vector<std::pair<std::string,LPDIRECT3DTEXTURE9>>::iterator texIt;
for(texIt = mTextures.begin(); texIt != mTextures.end(); texIt++)
{
outF << (*texIt).first << " : "<< filename << "\n";
if((*texIt).first == filename)
{
return (*texIt).second;
}
}
outF << filename.c_str() << "\n";
//Texture isn't loaded yet, try to load it..
LPDIRECT3DTEXTURE9 nNewTx=0;
std::ifstream mFile(filename.c_str());
if(mFile.is_open())
{
mFile.close();
D3DXCreateTextureFromFile(d3ddev,filename.c_str(),&nNewTx);
outF << "RenderManager: Texture Found!" << "\n";
mTextures.push_back(std::pair<std::string,LPDIRECT3DTEXTURE9>(filename,nNewTx));
}
else
{
D3DXCreateTextureFromFile(d3ddev,"missing.dds",&nNewTx);
outF << "OSHI-" << "\n";
mFile.close();
}
outF.close();
return nNewTx;
}
this of course, outputs to a file:
Quote:sprite.dds
RenderManager: Texture Found!
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
sprite.dds : sprite.dds
Now, even though it "finds" the texture, the instance of the texture that is returned is NULL, and instead of being greeted by some sprites (which is what happens when i load the file per sprite) I just get a blank screen :(