2013-07-15 5 views
0

Я работаю в openFrameworks, набор библиотек C++.Стереть части изображения, чтобы сделать прозрачные пиксели

То, что я пытаюсь сделать, это просто «стереть» определенные пиксели ofImage (класс, который загружает/отображает изображение и имеет доступ к его пиксельной матрице), когда форма (ластик) проходит над соответствующим пикселей изображения. Довольно простые вещи - я думаю - но у меня есть ментальный блок!

ofImage имеет два метода - getPixels() и getPixelsRef(), которые, похоже, подходят к тому, что я пытаюсь сделать, но методология, которую я использую, не совсем дает мне результаты, которые я хочу.

Ниже приведен пример попытки обновления пикселей переднего плана изображения из пикселей фонового изображения:

ofPixelsRef fore = foreground.getPixelsRef(); 
ofPixelsRef back = background.getPixelsRef(); 

for(int x = 0; x < foreground.getWidth()/2; x++) { 
    for (int y = 0; y < foreground.getHeight(); y++) { 
     ofColor c = back.getColor(x, y); 
     fore.setColor(x, y, c); 
    } 
} 

foreground.setFromPixels (носовой);

и вот попытка статически цвет переднего плана с заранее определенным цветом (который я думаю, что я хочу сделать, с прозрачным белым?!?):

ofPixelsRef fore = foreground.getPixelsRef(); 
ofColor c(0, 127); 
for(int x = 0; x < foreground.getWidth(); x++) { 
    for (int y = 0; y < foreground.getHeight(); y++) { 
     fore.setColor(x, y, c); 
    } 
} 

foreground.setFromPixels(fore); 

Ни совсем, где я хочу добраться, но я думаю, что они удары в правильном направлении. Если у кого-то есть идеи о том, где действовать, я все уши.

Я бы подумал о переходе к классу ofFbo или даже к GLSL, если есть чистый пример/пример. Не стесняйтесь публиковать ванильный C++, и я посмотрю, что я могу сделать, чтобы портировать его на oF.

Спасибо,

~ Джесси

ответ

Смежные вопросы