SUTILAPI optix::TextureSampler loadTexture( optix::Context context, const std::string& filename, const optix::float3& default_color ) { bool IsHDR = false; size_t len = filename.length(); if(len >= 3) { IsHDR = (filename[len-3] == 'H' || filename[len-3] == 'h') && (filename[len-2] == 'D' || filename[len-2] == 'd') && (filename[len-1] == 'R' || filename[len-1] == 'r'); } if(IsHDR) return loadHDRTexture(context, filename, default_color); else return loadPPMTexture(context, filename, default_color); }
optix::TextureSampler loadTexture( optix::Context context, const std::string& filename, const optix::float3& default_color ) { bool IsHDR = false; bool HavePPM = false; if (filename.size() > 0) { std::size_t pos_back = filename.find_last_of("/\\"); std::size_t pos_point = filename.find("."); std::string path = filename.substr(0, pos_back+1); std::string name = filename.substr(pos_back+1, (filename.size()-pos_back)-(filename.size()-pos_point)-1); std::string extension = filename.substr(pos_point+1); std::string new_file = path + name + ".ppm"; std::ifstream exists(new_file); if (exists) { return loadPPMTexture(context, new_file, default_color); } if (extension.compare("hdr") == 0 || extension.compare("HDR") == 0) { IsHDR = true; } if(!IsHDR && extension.compare("ppm") != 0 || extension.compare("PPM") != 0) { std::string convert = "convert.exe " + filename + " " + new_file; system(convert.c_str()); return loadPPMTexture(context, new_file, default_color); } } if (IsHDR) { return loadHDRTexture(context, filename, default_color); } else { return loadPPMTexture(context, filename, default_color); } }