QVideoFilterRunnable和OpenGL Context如何协同工作?
我正尝试在Android上使用C ++,Qt,QML,OpenCV和OpenGL编程增强现实(AR)应用程序。
工作流程:
QVideoFilterRunnable::run(...)
操作视频帧纹理的代码示例:
QVideoFrame FilterRunnable::run(QVideoFrame* input,
const QVideoSurfaceFormat &sFormat,
RunFlags flags)
{
if(sFormat.handleType() == QAbstractVideoBuffer::GLTextureHandle)
{
QOpenGLContext* c = QOpenGLContext::currentContext();
QOpenGLFunctions* f = c->functions();
GLuint textID = input->handle().toInt();
f->glBindTexture(GL_TEXTURE_2D,textID);
float pixels[] = {
0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f,
1.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
};
f->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
f->glTexImage2D(GL_TEXTURE_2D,
0, GL_RGB,
2, 2, 0,
GL_RGB, GL_FLOAT, pixels);
}
}
使用glTexImage2D()
,屏幕会变黑而没有任何错误。
问题是我没有找到任何信息如何FilterRunnable::run()
处理背景中的OpenGL上下文。 我不知道如何使用glDrawArrays()
, glViewport()
而不使用标准函数initializeGL()
, resizeGL()
, paintGL()
。
例如,我想将视频框架(映射在背景多边形上)与其前面的任意OpenGL对象结合在一起。
我可以在哪里获得关于这个主题的信息或者什么是最好的方法?
链接地址: http://www.djcxy.com/p/63885.html上一篇: How does QVideoFilterRunnable and OpenGL Context works together?