opengl - OpenCV 2.2窗口在OpenGL上引起问题

标签 opengl opencv rendering buffer framebuffer

这是非常简单的代码..唯一的事情是我多次重复相同的代码进行详细调试。详细信息:OpenGL版本3.3.0,Window 7 OS和VS2008,OpenCV 2.2.0。

RenderObject();
//glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);
Mat image;
image.create(screenHeight,screenWidth, CV_8UC3);
glReadPixels(0, 0, screenWidth, screenHeight, GL_BGR, GL_UNSIGNED_BYTE, (uchar*)image.data);
int error_code1 = glGetError();  // Error Code: 0, NO Error, Also output is good/as expected!
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
int error_code8 = glGetError();  // Error Code: 0, NO Error
//flip(image, image, 0);
//glPopClientAttrib();
const char *title = "glReadPixels Output";
cv::namedWindow(title);  
int error_code2 = glGetError();  // Error Code: 1282, GL_INVALID_OPERATION
imshow(title, image);
int error_code3 = glGetError();  // Error Code: 1282, GL_INVALID_OPERATION
waitKey(5000);
int error_code4 = glGetError();  // Error Code: 0, NO Error
destroyWindow(title);
int error_code5 = glGetError();  // Error Code: 1282, GL_INVALID_OPERATION
image.release();

int error_code6 = glGetError();  // Error Code: 1282, GL_INVALID_OPERATION

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fboId);
glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);

int error_code7 = glGetError();  // Error Code: 1282, GL_INVALID_OPERATION

引擎盖下发生的事情。那是什么? ...即使OpenCV窗口正在接管默认缓冲区,至少error_code7应该为0(即无错误)。我用framebuffer对象以及默认的glut隐藏窗口测试了代码。另外,让我告诉您,我必须使用framebuffer对象。因此,不能使用相同的默认窗口进行绘制和显示。

最佳答案

code4为0,因为在上一个glGetError()之后没有新的OpenGL操作发生。您应该解决启动时出现的问题,这是glGetError()第一次出现非零返回值的情况。因此,待办事项列表上的第一件事是在下面添加glGetError()glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
那条线应该不会真正造成任何麻烦,但还是要检查一下。如果不是,那么namedWindow调用可能会使事情变得混乱。您的OpenGL上下文是哪个版本?

关于opengl - OpenCV 2.2窗口在OpenGL上引起问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6386591/

相关文章:

ios - 在 IOS 上使用 OpenGL 三重缓冲

javascript - Meteor Flow Router 嵌套动态模板

c++ - 投影矩阵实现

opengl - (OpenGL 3.1 - 4.2) (GLSL) 高效的统一变量?

python - 如何使用OpenCV摄像机捕获设置帧率

python - 如何适应文档?

qt - 相对于对象 Axis 的 OpenGL 旋转

c++ - 如何在 OpenGl 中设置文本颜色

c++ - 图像窗口在程序运行期间不响应 opencv

html - 图像输出 rom R 分辨率低