mirror of
https://github.com/projectM-visualizer/projectm.git
synced 2026-02-24 03:35:33 +00:00
git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@568 6778bc44-b910-0410-a7a0-be141de4315d
126 lines
2.5 KiB
C++
126 lines
2.5 KiB
C++
#include "TextureManager.hpp"
|
|
#include "CustomShape.hpp"
|
|
#include "Common.hpp"
|
|
#include "IdleTextures.hpp"
|
|
|
|
|
|
|
|
TextureManager::TextureManager(const std::string _presetURL): presetURL(_presetURL)
|
|
{
|
|
Preload();
|
|
}
|
|
|
|
TextureManager::~TextureManager()
|
|
{
|
|
Clear();
|
|
}
|
|
|
|
void TextureManager::Preload()
|
|
{
|
|
GLuint tex = SOIL_load_OGL_texture_from_memory(
|
|
M_data,
|
|
M_bytes,
|
|
SOIL_LOAD_AUTO,
|
|
SOIL_CREATE_NEW_ID,
|
|
|
|
SOIL_FLAG_POWER_OF_TWO
|
|
| SOIL_FLAG_MULTIPLY_ALPHA
|
|
| SOIL_FLAG_COMPRESS_TO_DXT
|
|
);
|
|
textures["M.tga"]=tex;
|
|
|
|
tex = SOIL_load_OGL_texture_from_memory(
|
|
project_data,
|
|
project_bytes,
|
|
SOIL_LOAD_AUTO,
|
|
SOIL_CREATE_NEW_ID,
|
|
|
|
SOIL_FLAG_POWER_OF_TWO
|
|
| SOIL_FLAG_MULTIPLY_ALPHA
|
|
| SOIL_FLAG_COMPRESS_TO_DXT
|
|
);
|
|
textures["project.tga"]=tex;
|
|
|
|
tex = SOIL_load_OGL_texture_from_memory(
|
|
headphones_data,
|
|
headphones_bytes,
|
|
SOIL_LOAD_AUTO,
|
|
SOIL_CREATE_NEW_ID,
|
|
|
|
SOIL_FLAG_POWER_OF_TWO
|
|
| SOIL_FLAG_MULTIPLY_ALPHA
|
|
| SOIL_FLAG_COMPRESS_TO_DXT
|
|
);
|
|
textures["headphones.tga"]=tex;
|
|
}
|
|
|
|
void TextureManager::Clear()
|
|
{
|
|
std::map<std::string, GLuint>::const_iterator iter;
|
|
|
|
for(iter = textures.begin(); iter != textures.end(); iter++)
|
|
{
|
|
glDeleteTextures(1,&iter->second);
|
|
}
|
|
textures.clear();
|
|
}
|
|
|
|
|
|
void TextureManager::unloadTextures(const PresetOutputs::cshape_container &shapes)
|
|
{
|
|
/*
|
|
for (PresetOutputs::cshape_container::const_iterator pos = shapes.begin();
|
|
pos != shapes.end(); ++pos)
|
|
{
|
|
|
|
if( (*pos)->enabled==1)
|
|
{
|
|
|
|
if ( (*pos)->textured)
|
|
{
|
|
std::string imageUrl = (*pos)->getImageUrl();
|
|
if (imageUrl != "")
|
|
{
|
|
std::string fullUrl = presetURL + "/" + imageUrl;
|
|
ReleaseTexture(LoadTexture(fullUrl.c_str()));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
}
|
|
|
|
|
|
GLuint TextureManager::getTexture(const std::string imageURL)
|
|
{
|
|
|
|
if (textures.find(imageURL)!= textures.end())
|
|
{
|
|
return textures[imageURL];
|
|
}
|
|
else
|
|
{
|
|
std::string fullURL = presetURL + PATH_SEPARATOR + imageURL;
|
|
GLuint tex = SOIL_load_OGL_texture(
|
|
fullURL.c_str(),
|
|
SOIL_LOAD_AUTO,
|
|
SOIL_CREATE_NEW_ID,
|
|
|
|
SOIL_FLAG_POWER_OF_TWO
|
|
// SOIL_FLAG_MIPMAPS
|
|
| SOIL_FLAG_MULTIPLY_ALPHA
|
|
| SOIL_FLAG_COMPRESS_TO_DXT
|
|
//| SOIL_FLAG_DDS_LOAD_DIRECT
|
|
);
|
|
textures[imageURL]=tex;
|
|
return tex;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
unsigned int TextureManager::getTextureMemorySize()
|
|
{
|
|
return 0;
|
|
}
|