Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Openframeworks中将Fbo裁剪为边界框_C++_Pixels_Openframeworks_Fbo - Fatal编程技术网

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