nuclear@2: #ifndef TEXTURE_H_ nuclear@2: #define TEXTURE_H_ nuclear@2: nuclear@2: #include "image.h" nuclear@2: #include "color.h" nuclear@2: nuclear@2: class Texture { nuclear@2: public: nuclear@2: Image img; nuclear@2: nuclear@2: inline Color lookup(float u, float v) const; nuclear@2: nuclear@2: bool load(const char *fname) { return img.load(fname); } nuclear@2: }; nuclear@2: nuclear@2: nuclear@2: inline Color Texture::lookup(float u, float v) const nuclear@2: { nuclear@2: int xsz = img.get_width(); nuclear@2: int ysz = img.get_height(); nuclear@2: nuclear@2: int x = (float)u / (float)xsz; nuclear@2: int y = (float)v / (float)ysz; nuclear@2: nuclear@2: float *pix = img.get_pixels() + ((y % ysz) * xsz + (x % xsz)) * 4; nuclear@2: return Color(pix[0], pix[1], pix[2]); nuclear@2: } nuclear@2: nuclear@2: nuclear@2: #endif // TEXTURE_H_