# HG changeset patch # User John Tsiombikas # Date 1501246200 -10800 # Node ID f5cc465eb735837c4c8410c0d57b32133bb341e6 # Parent e308561f9889c5854bc742b33cb9cc6600fc788e save cubemaps of the same file format as the opened file diff -r e308561f9889 -r f5cc465eb735 src/app.cc --- a/src/app.cc Fri Jul 28 13:24:34 2017 +0300 +++ b/src/app.cc Fri Jul 28 15:50:00 2017 +0300 @@ -16,7 +16,7 @@ static void flip_image(float *pixels, int xsz, int ysz); -static const char *img_fname; +static const char *img_fname, *img_suffix; static float cam_theta, cam_phi; static Texture *pano_tex; @@ -63,6 +63,10 @@ } printf("loaded image: %dx%d\n", pano_tex->get_width(), pano_tex->get_height()); + if(!(img_suffix = strrchr(img_fname, '.'))) { + img_suffix = ".jpg"; + } + // create cubemap cube_size = pano_tex->get_height(); glGenTextures(1, &cube_tex); @@ -149,14 +153,15 @@ viewmat[4].rotation_y(deg_to_rad(180)); // +Z // this must coincide with the order of GL_TEXTURE_CUBE_MAP_* values - static const char *fname[] = { - "cubemap_px.jpg", - "cubemap_nx.jpg", - "cubemap_py.jpg", - "cubemap_ny.jpg", - "cubemap_pz.jpg", - "cubemap_nz.jpg" + static const char *fname_pattern[] = { + "cubemap_px%s", + "cubemap_nx%s", + "cubemap_py%s", + "cubemap_ny%s", + "cubemap_pz%s", + "cubemap_nz%s" }; + static char fname[64]; glMatrixMode(GL_PROJECTION); glPushMatrix(); @@ -181,8 +186,9 @@ glGetTexImage(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGB, GL_FLOAT, pixels); //flip_image(pixels, cube_size, cube_size); - if(img_save_pixels(fname[i], pixels, cube_size, cube_size, IMG_FMT_RGBF) == -1) { - fprintf(stderr, "failed to save %dx%d image: %s\n", cube_size, cube_size, fname[i]); + sprintf(fname, fname_pattern[i], img_suffix); + if(img_save_pixels(fname, pixels, cube_size, cube_size, IMG_FMT_RGBF) == -1) { + fprintf(stderr, "failed to save %dx%d image: %s\n", cube_size, cube_size, fname); } }