【发布时间】:2015-01-05 10:42:53
【问题描述】:
我正在尝试开发一个基于 OpenGL 的 DirectShow transform 过滤器,它可以以用户指定的任意角度旋转图像。我使用glRotatef的非常基本的图像旋转示例。旋转代码作为独立的 Windows 应用程序运行良好。但是通过 Directshow 过滤器调用时会出错。
其他信息:
- 独立的 OpenGL 旋转应用程序运行良好,在任何阶段都没有任何错误。相同的 OpenGL 代码不能作为 Directshow 过滤器的一部分。
- Directshow 过滤器的 Transform 函数之前的所有 OpenGL 调用都成功,没有任何 GLErrors。
- DirectShow Filter 的 Transform 函数后的所有 OpenGL 调用都会引发错误为 INVALID OPERATION(错误代码 1282)。
- 我正在使用 Visual Studio 2008,而不是使用任何 OpenGL 3rd 方库,如 GLUT 或其他东西。
我怀疑它看起来或多或少像一个线程问题。我有初始化捕获过滤器、添加 opengl 旋转变换过滤器和视频渲染器的示例 directshow 应用程序。在初始化时,我使用了CoInitializeEx 和 COINIT_MULTITHREADED 以及 COINIT_APARTMENTTHREADED。两者都没有对线程进行任何改进。
什么样的方法可以解决这个问题?
【问题讨论】:
标签: opengl graphics directshow