예제 #1
0
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");
}
예제 #2
0
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();
}