当我使用下面的代码生成渐变时,它会在图像中心附近产生一个类似渐变的奇怪裂缝。
代码:
private bool CustomFilter(object item)
{
YourClass yourObject = item as YourClass ;
return yourObject.C2 != 0;
}
结果artifact。
答案 0 :(得分:2)
那是因为你从余弦中得到负值。那些无效的无符号整数像素值应该在[0,255]范围内。
答案 1 :(得分:1)
问题是您已经创建了89x89图像,并且您正在使用90x90阵列填充它。在每一行的末尾都存在不匹配,并且因为每个像素是奇数个字节,所以它将下一行移开一个字节。你的大多数像素几乎都是灰色的,所以你不会看到这种差异,但它会出现在光明和黑暗之间的过渡中。
答案 2 :(得分:1)
好的,可以通过替换:
来修复SDL_Surface * image = SDL_CreateRGBSurface(SDL_SWSURFACE, 89, 89, 24, 0x000000FF, 0x0000FF00, 0x00FF0000, 0);
GLubyte* save = new GLubyte[90*90*3];
getRgb(multiplier,save);
image->pixels = save;
使用:
GLubyte* save = new GLubyte[90*90*3];
getRgb(multiplier,save);
SDL_Surface* image = SDL_CreateRGBSurfaceFrom(save,
90,
90,
24,
90*3,
0x000000FF, 0x0000FF00, 0x00FF0000, 0);