0
我想繪製Direct2D幀的顏色通道在x軸上移動。我知道我可以將合成模式設置爲D2D1_COMPOSITE_MODE_PLUS
並分別繪製每個顏色通道,以便我可以手動移動它們。但我想知道是否有另一種(也許更有效)的方式繪製移動顏色通道的形狀?移動顏色通道而不分別繪製每個通道?
我附上了一張圖片,顯示了我的意思。 (我建議一個新標籤打開這個圖像和放大以看到效果更好)
我想繪製Direct2D幀的顏色通道在x軸上移動。我知道我可以將合成模式設置爲D2D1_COMPOSITE_MODE_PLUS
並分別繪製每個顏色通道,以便我可以手動移動它們。但我想知道是否有另一種(也許更有效)的方式繪製移動顏色通道的形狀?移動顏色通道而不分別繪製每個通道?
我附上了一張圖片,顯示了我的意思。 (我建議一個新標籤打開這個圖像和放大以看到效果更好)
這通常做的方法是在一個時間進行採樣,從輸入圖像的3個像素,由一些各自分開的在x方向上的量,並且將來自一個的紅色,來自另一個的綠色和來自第三個的藍色結合起來。不幸的是,我根本不知道DX2D,所以我不知道它是如何工作的。但是如果你有一個位圖和一個指向像素的指針,你可以簡單地從該指針中減去一個(或多個)像素,並向該指針添加一個或多個像素並從這些內存位置讀取(注意考慮圖像邊緣)。然後從您閱讀的值中拉出頻道。例如:
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,但如上所述,你必須處理在這些情況下,邊緣會發生什麼。
對不起,我遲到的迴應。我理解你的想法。現在我唯一的問題是如何讓它在D2D中正常工作。也許着色器可以提供幫助。不管怎樣,謝謝:) – Cubinator73 2014-11-01 11:35:10