fix failure to search multiview texture names along model-path

This commit is contained in:
David Rose 2011-11-30 00:33:31 +00:00
parent 9294ea77f7
commit d1c257fba9
2 changed files with 15 additions and 9 deletions

View File

@ -190,7 +190,7 @@ ns_has_texture(const Filename &orig_filename) {
MutexHolder holder(_lock);
Filename filename;
resolve_filename(filename, orig_filename);
resolve_filename(filename, orig_filename, false, LoaderOptions());
Textures::const_iterator ti;
ti = _textures.find(filename);
@ -214,7 +214,7 @@ ns_load_texture(const Filename &orig_filename, int primary_file_num_channels,
{
MutexHolder holder(_lock);
resolve_filename(filename, orig_filename);
resolve_filename(filename, orig_filename, read_mipmaps, options);
Textures::const_iterator ti;
ti = _textures.find(filename);
if (ti != _textures.end()) {
@ -378,8 +378,8 @@ ns_load_texture(const Filename &orig_filename,
{
MutexHolder holder(_lock);
resolve_filename(filename, orig_filename);
resolve_filename(alpha_filename, orig_alpha_filename);
resolve_filename(filename, orig_filename, read_mipmaps, options);
resolve_filename(alpha_filename, orig_alpha_filename, read_mipmaps, options);
Textures::const_iterator ti;
ti = _textures.find(filename);
@ -503,7 +503,7 @@ ns_load_3d_texture(const Filename &filename_pattern,
Filename filename;
{
MutexHolder holder(_lock);
resolve_filename(filename, orig_filename);
resolve_filename(filename, orig_filename, read_mipmaps, options);
Textures::const_iterator ti;
ti = _textures.find(filename);
@ -607,7 +607,7 @@ ns_load_2d_texture_array(const Filename &filename_pattern,
Filename unique_filename; //differentiate 3d-textures from 2d-texture arrays
{
MutexHolder holder(_lock);
resolve_filename(filename, orig_filename);
resolve_filename(filename, orig_filename, read_mipmaps, options);
// Differentiate from preloaded 3d textures
unique_filename = filename + ".2DARRAY";
@ -712,7 +712,7 @@ ns_load_cube_map(const Filename &filename_pattern, bool read_mipmaps,
Filename filename;
{
MutexHolder holder(_lock);
resolve_filename(filename, orig_filename);
resolve_filename(filename, orig_filename, read_mipmaps, options);
Textures::const_iterator ti;
ti = _textures.find(filename);
@ -1053,7 +1053,8 @@ ns_make_texture(const string &extension) const {
// optimization. Assumes _lock is held.
////////////////////////////////////////////////////////////////////
void TexturePool::
resolve_filename(Filename &new_filename, const Filename &orig_filename) {
resolve_filename(Filename &new_filename, const Filename &orig_filename,
bool read_mipmaps, const LoaderOptions &options) {
if (!_fake_texture_image.empty()) {
new_filename = _fake_texture_image;
return;
@ -1066,6 +1067,10 @@ resolve_filename(Filename &new_filename, const Filename &orig_filename) {
}
new_filename = orig_filename;
if (read_mipmaps || (options.get_texture_flags() & LoaderOptions::TF_multiview)) {
new_filename.set_pattern(true);
}
VirtualFileSystem *vfs = VirtualFileSystem::get_global_ptr();
vfs->resolve_filename(new_filename, get_model_path());

View File

@ -130,7 +130,8 @@ private:
TextureCollection ns_find_all_textures(const string &name) const;
PT(Texture) ns_make_texture(const string &extension) const;
void resolve_filename(Filename &new_filename, const Filename &orig_filename);
void resolve_filename(Filename &new_filename, const Filename &orig_filename,
bool read_mipmaps, const LoaderOptions &options);
void try_load_cache(PT(Texture) &tex, BamCache *cache,
const Filename &filename, PT(BamCacheRecord) &record,