gpt4 book ai didi

c++ - 在不单独绘制每个 channel 的情况下移动颜色 channel ?

转载 作者:行者123 更新时间:2023-11-30 03:59:57 31 4
gpt4 key购买 nike

我想用 Direct2D 帧绘制颜色 channel 在 x 轴上移动的帧。我知道我可以将合成模式设置为 D2D1_COMPOSITE_MODE_PLUS 并分别绘制每个颜色 channel ,以便我可以手动移动它们。但我想知道是否有另一种(可能更有效)的方法来绘制带有移位颜色 channel 的形状?

我附上了一张图片,说明了我的意思。(我建议在新标签页打开这张图片,放大看效果更佳) enter image description here

最佳答案

通常这样做的方法是一次从输入图像中采样 3 个像素,每个像素在 x 方向上分开一定量,然后将一个的红色、另一个的绿色和第三个的蓝色组合起来.不幸的是,我根本不知道 DX2D,所以我不知道它在那里工作的细节。但是如果你有一个位图和一个指向像素的指针,你可以简单地从该指针中减去一个(或多个)像素,并将一个或多个像素添加到该指针并从这些内存位置读取(注意考虑图像边缘)。然后从您阅读的值中提取 channel 。例如:

RGBA8* pixel = baseAddressOfImage;
RGBA8* pixelMinus1 = pixel - 1;
RGBA8* pixelPuls1 = pixel + 1;
for each pixel in the output
{
result.red = pixelMinus1->red;
result.green = pixel->green;
result.blue = pixelPlus1->blue;
pixelMinus1++;
pixel++;
pixelPlus1++;
}

请注意,您可以加减 1 个以上,但如上所述,在这些情况下,您必须处理边缘发生的情况。

关于c++ - 在不单独绘制每个 channel 的情况下移动颜色 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26578576/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com