来自 Windows (MSVC++ 2005):您建议使用什么 SDK 或类似工具将 C++ 应用程序 (DirectShow+Direct3D) 移植到Linux播放视频文件 + 使用片段着色器?
3 回答
你有什么理由需要片段着色器吗?(您是否对视频图像进行后期处理?)。您无需进行任何着色器编码即可使用 OpenGL 播放视频。
我会使用 ffmpeg(实际上是 libavcodec)来进行视频解码。显示一帧只需要一个 OpenGL 纹理和每帧调用 glTexSubImage2D 来进行更新。
您需要改用 OpenGL。
实现的一些提示:
- 要获得良好的性能,您需要确保安装了良好的视频卡驱动程序。
- 如果您不熟悉 OpenGL,请从“红皮书”开始- OpenGL 编程指南
- 您可能需要从此处下载最新的扩展头文件
http://www.opengl.org/registry/
- GLEW 库可能会有所帮助您在确定可用的扩展名。
- 在项目中包含GL/gl.h和glext.h文件
- 链接到驱动程序的 opengl 动态库:/usr/lib64/libGL.so或 simmilar
如果您需要移植更复杂的 directshow 应用程序,我还会检查 linux 上的 gstreamer 框架。它还具有某种用于构建媒体播放的图表。这是完全不同的,但是如果你有经验并且需要复杂的directshow,那么你会看到一些类比。
gstreamer 还有一个用于图像效果和着色器的 opengl 插件,...
http://www.gstreamer.net/ http://www.gstreamer.net/releases/gst-plugins-gl/0.10.1.html