- const short cm_count = 6;
- const int cm_size = 512;
- unsigned char *pixels[cm_count];
- const char *cm_names[cm_count] =
- {"xneg.png", "xpos.png", "yneg.png", "ypos2.png", "zneg.png", "zpos.png"};
- for (int i = 0; i < cm_count; ++i)
- { cubemaps[i] = bindTexture(QPixmap(cm_names[i]), GL_TEXTURE_2D);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- pixels[i] = (unsigned char *)malloc(3*cm_size*cm_size);
- glGetTexImage(GL_TEXTURE_2D, 0 , GL_RGB, GL_UNSIGNED_BYTE, pixels[i]);
- }
- glActiveTexture(GL_TEXTURE11);
- glEnable(GL_TEXTURE_CUBE_MAP);
- glGenTextures(1, &cubemap);
- glBindTexture(GL_TEXTURE_CUBE_MAP, cubemap);
- glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
- glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER,GL_LINEAR);
- glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R,GL_CLAMP_TO_EDGE);
- glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X, 0, GL_RGBA, cm_size, cm_size, 0, GL_RGB, GL_UNSIGNED_BYTE,pixels[0]);
- glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X, 0, GL_RGBA, cm_size, cm_size, 0, GL_RGB, GL_UNSIGNED_BYTE,pixels[1]);
- glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y, 0, GL_RGBA, cm_size, cm_size, 0, GL_RGB, GL_UNSIGNED_BYTE,pixels[2]);
- glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, GL_RGBA, cm_size, cm_size, 0, GL_RGB, GL_UNSIGNED_BYTE,pixels[3]);
- glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z, 0, GL_RGBA, cm_size, cm_size, 0, GL_RGB, GL_UNSIGNED_BYTE,pixels[4]);
- glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, GL_RGBA, cm_size, cm_size, 0, GL_RGB, GL_UNSIGNED_BYTE,pixels[5]);