我试图在Android上使用C ++,Qt,QML,OpenCV和OpenGL编写增强现实(AR)应用程序。
原则工作流程:
localhost:8080/components/my-el/
操纵视频框架纹理的代码示例:
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()
如何在后台处理OpenGL上下文的任何信息。我不知道如何在没有标准函数FilterRunnable::run()
,glDrawArrays()
,glViewport()
的情况下使用initializeGL()
,resizeGL()
。
例如,我想将videoframe(映射在背景多边形上)与前面的任意OpenGL对象结合起来。
我可以在哪里获得有关此主题的信息或最佳方式?