player::player(float a) { image = new ImageIO("spaceship.ppm"); upImage = new ImageIO("spaceship1.ppm"); size = a; glGenTextures(1, &p_tex1); textureMapping(p_tex1, upImage); glGenTextures(1, &p_tex); textureMapping(p_tex, image); //glEnable(GL_TEXTURE_2D); //glBindTexture(GL_TEXTURE_2D, p_tex); printf("PALAYER"); }
void SCANLINE::Compute_pixel_intensity() { vector <float> Intensity_diffuse(3); vector <float> Intensity_specular(3); float cylinder_u,cylinder_v; int shininess = 8; for (int i = 0; i< Ymax ; i++ ) for (int j = 0; j< Xmax; j++ ) { vector<float> pixel_normal(real_pixel[i][j].begin()+2,real_pixel[i][j].begin()+5); vector<float> device_xyz(real_pixel[i][j].begin()+5,real_pixel[i][j].end()); if(vector_length(pixel_normal) == 0) continue; // if(vector_length(device_xyz) == 0) // continue; // datatest<<i<<'\t'<<j; // for(int p = 0; p<(int)pixel_normal.size(); p++) // datatest<<setw(15)<<pixel_normal[p]; // datatest<<endl; vector<float> line_inter(4); compute_invert(device_xyz);//out put xyz in world space vector_subtraction(line_inter, ObjectCenter, device_xyz); // for(int p = 0; p<(int)line_inter.size(); p++) // datatest<<setw(15)<<line_inter[p]; // datatest<<endl; Normalization(line_inter); //normalize the pixel normal Normalization(pixel_normal); ///texture mapping // textureMapping(pixel_normal,cylinder_u,cylinder_v); textureMapping(pixel_normal,cylinder_u,cylinder_v); ///------------------------------- float cos_diffuse = dot_product3D(pixel_normal,vec_light); float cos_specular = pow(dot_product3D(pixel_normal,H_specular), shininess); for (int p = 0; p< 3 ; p++ ) { ///----------Intensity diffuse----Kd*I*(NL) Intensity_diffuse[p] = K_diffuse*I_light[p]*cos_diffuse; ///----------Intensity specular----Ks*I*(NH)^n Intensity_specular[p] = K_specular*I_light[p]*cos_specular; //---------------sum of all intensity-- //replace normal value to RGB value in real_pixel real_pixel[i][j][p+2]= Intensity_diffuse[p] + Intensity_specular[p] + Intensity_ambient[p] +imagePixel[(int)cylinder_v][(int)cylinder_u][p]; if(real_pixel[i][j][p+2] > 1) real_pixel[i][j][p+2] = 1; } } // datatest.close(); }