У меня есть чертеж внутри fbo
, и вы пытаетесь уменьшить размер fbo
, обрезая видимые части с помощью ограничительной рамки. Вот визуальное представление того, что я пытаюсь достичь: bounding box exampleОбрезка Fbo в ограничительную рамку в Openframeworks
Я нашел решение: передать fbo
данных в pixels
, а затем обнаружить первые цветные пиксели слева, справа, сверху, нижняя часть изображения.
В следующей части кода я пытаюсь обнаружить нижнее пересечение. Но у меня странная проблема с пикселями.
int w = 4;
int h = 4;
fbo.allocate(w, h, GL_RGBA);
fbo.begin();
ofClear(0, 0);
fbo.end();
fbo.begin();
ofSetColor(255, 0, 0);
ofDrawRectangle(0, 0, 4, 2);
fbo.end();
pixels.allocate(w, h, GL_RGBA);
fbo.readToPixels(pixels);
for(auto line = pixels.getLines().end(); line != pixels.getLines().begin(); --line){
for(auto pixel: line.getPixels()){
cout << "line: " << line.getLineNum() << " color: " << pixel.getColor() << endl;
}
}
выход:
line: 4 color: 24, 215, 83, 118
line: 4 color: 255, 127, 0, 0
line: 4 color: 173, 7, 0, 0
line: 4 color: 1, 0, 0, 0
line: 3 color: 0, 0, 0, 0
line: 3 color: 0, 0, 0, 0
line: 3 color: 0, 0, 0, 0
line: 3 color: 0, 0, 0, 0
line: 2 color: 0, 0, 0, 0
line: 2 color: 0, 0, 0, 0
line: 2 color: 0, 0, 0, 0
line: 2 color: 0, 0, 0, 0
line: 1 color: 255, 0, 0, 255
line: 1 color: 255, 0, 0, 255
line: 1 color: 255, 0, 0, 255
line: 1 color: 255, 0, 0, 255
line:1
выглядит хорошо, но то, что случилось с line:4
, что это случайные цвета там делает? После восстановления приложения они, возможно, ушли, но со случайным шансом. Может быть, есть другой способ обрезать fbo
видимыми частями изображения? Этот solution не подходит для меня.
Это имеет смысл. Спасибо! – Gordey