#include #include #include #include #include #include using namespace hgl; using namespace hgl::util; #if HGL_OS == HGL_OS_Windows #define std_cout std::wcout #else #define std_cout std::cout #endif// namespace hgl { void RGB2YUV(uint8 *y,uint8 *u,uint8 *v,const uint8 *rgb,const uint count); void normal_compress(uint8 *x,uint8 *y,const uint8 *rgb,const uint count); template void MixRGB(T *rgb,const T *r,const T *g,const T *b,const uint count) { for(uint i=0;i void MixRGBA(T *rgba,const T *r,const T *g,const T *b,const T *a,const uint count) { for(uint i=0;i pixels=new uint8[w*h*4]; MixRGBA(pixels,r,g,b,a,w*h); if(SaveImageToFile(out_filename,w,h,scale,4,IL_UNSIGNED_BYTE,pixels)) { std_cout< pixels=new uint8[w*h*3]; MixRGB(pixels,r,g,b,w*h); if(SaveImageToFile(out_filename,w,h,scale,3,IL_UNSIGNED_BYTE,pixels)) { std_cout< C2G1 Color1.png Color2.png Grayscale.png"< MPBR6 Color.png Matallic.png Roughness.png Grayscale.png"< MPBR7 Color.png Matallic.png Roughness.png Grayscale1.png Grayscale2.png"<>2; AutoDeleteArray y1=new uint8[pixel_total]; AutoDeleteArray y2=new uint8[pixel_total]; AutoDeleteArray u1=new uint8[half_pixel_total]; AutoDeleteArray u2=new uint8[half_pixel_total]; AutoDeleteArray v1=new uint8[half_pixel_total]; AutoDeleteArray v2=new uint8[half_pixel_total]; RGB2YUV(y1,u1,v1,(uint8 *)c1.GetRGB(IL_UNSIGNED_BYTE),pixel_total); RGB2YUV(y2,u2,v2,(uint8 *)c2.GetRGB(IL_UNSIGNED_BYTE),pixel_total); SaveRGBFile( argv[1], w,h,1.0, y1,y2,(uint8 *)g.GetLum(IL_UNSIGNED_BYTE), OS_TEXT("Y2G")); SaveRGBAFile( argv[1], w,h,0.5, u1,v1,u2,v2, OS_TEXT("UV2")); } ilShutDown(); return 0; }