int main(int argc, char** argv) { int maxmem = argc >= 2 ? atoi(argv[1]) : 1024*1024; PtexCache* c = PtexCache::create(0, maxmem); Ptex::String error; PtexPtr<PtexTexture> r ( c->get("test.ptx", error) ); if (!r) { std::cerr << error.c_str() << std::endl; return 1; } PtexFilter::Options opts(PtexFilter::f_bicubic, 0, 1.0); PtexPtr<PtexFilter> f ( PtexFilter::getFilter(r, opts) ); float result[4]; int faceid = 0; float u=0, v=0, uw=.125, vw=.125; for (v = 0; v <= 1; v += .125) { for (u = 0; u <= 1; u += .125) { f->eval(result, 0, 1, faceid, u, v, uw, 0, 0, vw); printf("%8f %8f -> %8f\n", u, v, result[0]); } } return 0; }
PtexTexture* PtexTexture::open(const char* path, Ptex::String& error, bool premultiply) { // create a private cache and use it to open the file PtexCache* cache = PtexCache::create(1, 1024*1024, premultiply); PtexTexture* file = cache->get(path, error); // make reader own the cache (so it will delete it later) PtexReader* reader = dynamic_cast<PtexReader*> (file); if (reader) reader->setOwnsCache(); // and purge cache so cache doesn't try to hold reader open cache->purgeAll(); return file; }