this->h = h;
this->colormodel = colormodel;
texture_id = -1;
- texture_id = -1;
texture_w = 0;
texture_h = 0;
texture_components = 0;
#endif
}
-void write_ppm(uint8_t *tp, int w, int h, const char *fmt, ...);
+#ifdef HAVE_GL
+static void write_ppm(uint8_t *tp, int w, int h, const char *fmt, ...)
+{
+ va_list ap; va_start(ap, fmt);
+ char fn[256]; vsnprintf(fn, sizeof(fn), fmt, ap);
+ va_end(ap);
+ FILE *fp = !strcmp(fn,"-") ? stdout : fopen(fn,"w");
+ if( fp ) {
+ fprintf(fp,"P6\n%d %d\n255\n",w,h);
+ fwrite(tp,3*w,h,fp);
+ if( fp != stdout ) fclose(fp);
+ }
+}
+#endif
void BC_Texture::write_tex(const char *fn)
{
#ifdef HAVE_GL
int prev_id = -1;
glGetIntegerv(GL_ACTIVE_TEXTURE, &prev_id);
- glActiveTexture(this->texture_id);
+ glActiveTexture(GL_TEXTURE31);
+ glBindTexture(GL_TEXTURE_2D, texture_id);
+ glEnable(GL_TEXTURE_2D);
int w = get_texture_w(), h = get_texture_h();
- uint8_t img[w*h*3];
+ uint8_t *img = new uint8_t[w*h*3];
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGB, GL_UNSIGNED_BYTE, img);
write_ppm(img, w, h, "%s", fn);
+ delete img;
glActiveTexture(prev_id);
#endif
}