C++ 在现代OpenGL中显示摄像机视频流的最佳方法
我正在OpenGL中创建一个增强现实应用程序,我想用虚拟对象增强Kinect捕获的视频流。我发现一些使用固定函数管道OpenGL运行的代码,它创建了一个C++ 在现代OpenGL中显示摄像机视频流的最佳方法,c++,opengl,video,video-streaming,augmented-reality,C++,Opengl,Video,Video Streaming,Augmented Reality,我正在OpenGL中创建一个增强现实应用程序,我想用虚拟对象增强Kinect捕获的视频流。我发现一些使用固定函数管道OpenGL运行的代码,它创建了一个glTexImage2D,用图像数据填充它,然后用glTexCoord2f创建一个glu四元组来填充屏幕 我正在寻找一个优化的解决方案,只使用现代的、基于着色器的OpenGL,它也能够处理高清视频流 我想我希望回答我的问题的是一个关于如何在OpenGL中实现相机视频流渲染的可能性列表,我可以从中选择最适合我需要的一个。PBO(像素缓冲对象)用于流
glTexImage2D
,用图像数据填充它,然后用glTexCoord2f
创建一个glu四元组
来填充屏幕
我正在寻找一个优化的解决方案,只使用现代的、基于着色器的OpenGL,它也能够处理高清视频流
我想我希望回答我的问题的是一个关于如何在OpenGL中实现相机视频流渲染的可能性列表,我可以从中选择最适合我需要的一个。PBO(像素缓冲对象)用于流纹理。此外,一些现代硬件能够将视频捕获直接流式传输到GPU内存(NVIDIA的GPUDirect,但可能还有其他解决方案),感谢您的回复!我读过PBO与纹理的结合,这似乎是一个非常有效的解决方案!但据我所知,PBO仅用于将像素传输到GPU。除了将视频图像存储在纹理中,还有其他方法渲染视频图像吗?纹理只是一种OpenGL抽象,用于N维颜色数组,具有一些可用的过滤选项。在OpenGL方面,您还希望它是什么样的类型?谢谢!使用纹理无疑是最明显的方法。着色器存储缓冲区对象如何?另一个后续问题:我最近阅读了有关
图像
变量的文章,这些变量可以用来代替着色器中的采样器
来访问像素数据。这两者之间的主要区别是什么?