C++ 在Openframeworks中将Fbo裁剪为边界框
我在C++ 在Openframeworks中将Fbo裁剪为边界框,c++,pixels,openframeworks,fbo,C++,Pixels,Openframeworks,Fbo,我在fbo中有一个图形,试图通过使用边界框裁剪可见部分来减小fbo的大小。以下是我试图实现的视觉表现: 我找到了解决方案:将fbo数据传递到pixels,然后检测图像左、右、上、下部分的第一个彩色像素 在下面的代码中,我将尝试检测底部交点。但我对像素有一个奇怪的问题 int w = 4; int h = 4; fbo.allocate(w, h, GL_RGBA); fbo.begin(); ofClear(0, 0); fbo.end(); fbo.begin(); ofSetColor
fbo
中有一个图形,试图通过使用边界框裁剪可见部分来减小fbo
的大小。以下是我试图实现的视觉表现:
我找到了解决方案:将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;
}
}
行:1
看起来不错,但是行:4
有什么问题,随机颜色在那里做什么?重建应用程序后,他们可能已经离开了,但随机的机会。也许还有另一种方法可以通过图像的可见部分裁剪fbo?
这对我不起作用。你的循环就是问题所在。第4行指向未初始化的内存区域,而第0行丢失。矩形在第0行和第1行中绘制 从迭代器::end()文档中: 返回迭代器结束 返回一个迭代器,该迭代器引用向量容器中结束元素的过去部分 结束元素的过去是向量中最后一个元素之后的理论元素。它不指向任何元素,因此不应取消引用 带答案的问题将帮助您:
这是有道理的。非常感谢。
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