Я работаю в 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.
Спасибо,
~ Джесси