我正在尝试开发一个基于OpenGL的DirectShow transform过滤器,它以用户指定的任意角度旋转图像。我使用glRotatef使用非常基本的图像旋转样本。旋转代码作为独立的Windows应用程序非常有效。但是在通过Directshow过滤器调用时会出错。
其他信息:
我怀疑它看起来或多或少像是一个线程问题。我有示例directshow应用程序初始化捕获过滤器,添加opengl旋转变换过滤器和视频渲染器。在初始化时,我使用了CoInitializeEx COINIT_MULTITHREADED和COINIT_APARTMENTTHREADED。在线程方面都没有任何改进。
在解决这个问题时会采取什么样的方法?
答案 0 :(得分:0)
我通过在第一次调用Transform函数期间创建OpenGL上下文来修复此问题。这使得OpenGL上下文与OpenGL绘图函数具有相同的线程。
帮助
的参考链接GlGenTextures keeps returing 0's
https://www.opengl.org/wiki/Common_Mistakes#Extensions_and_OpenGL_Versions
Textures not working with OpenGL
感谢大家对我的问题进行了更正。
编辑:这种线程问题是由于线程之间共享设备上下文的问题。可以使用 wglShareList API来处理它,以在两个不同的线程之间共享上下文。这解决了我发布的问题。
https://www.opengl.org/wiki/OpenGL_and_multithreading
https://www.opengl.org/wiki/Platform_specifics:_Windows
希望这对那些陷入同一条船的人有用: - )