使用openGL进行视频显示

时间:2010-06-18 15:02:02

标签: c++ opengl video graphics

我想直接用OpenGL显示非常高分辨率的视频。

图像数据将在GPU上进行处理,我希望避免往返PC,以便在基于标准位图的窗口中显示视频。
跨平台很好,Windows只会好(只有nvidia)

任何人都有这方面的链接吗?

在Qt中有一个糟糕的NeHe教程和一些嵌入式openGL小部件的例子,但我需要更好的性能和更大的图像。

4 个答案:

答案 0 :(得分:11)

假设使用OpenGL 2.1,请使用GL_PIXEL_UNPACK_BUFFER类型的缓冲区对象将像素数据流式传输到纹理。它比每帧上传数据更快,因为当你使用glMapBuffer,glMapBufferRange(OpenGL 3.2)或直接调用glBufferData时,实现可能会使用DMA进行复制。您还可以在每个批处理中复制多个帧,以在复制开销和映射开销之间进行权衡。最后,创建一个着色器,将YUV或YCbCr转换为RGB,并使用三角形条显示纹理。

答案 1 :(得分:2)

与OpenGL相关的显而易见的事情是将位图显示为纹理。

答案 2 :(得分:1)

所以你想在纹理上发送视频并用片段着色器处理它? Here's一个简短的教程如何做类似的事情。它只是一个简单的OpenGL 2.0示例,它创建了2个窗口大小的纹理,并在片段着色器中混合它们。没有涉及视频,但如果您已经有解码方法,则不应该很难修改。

答案 3 :(得分:0)

如果你愿意,我已经创建了一个非常简单的API,在许多方面,它还可以将视频显示为opengl纹理。您还可以使用实时视频Feed创建动态高度地图。

您可以在http://www.barbato.us/category/programming-labs/

查看API

非常易于使用,并且使代码具有可读性。

祝你好运!!!