我正在编写一个实时的交互式三维可视化程序,在程序的每个点上,我都可以通过stereoscopy计算出两张图像(位图),这些图像旨在一起看3D。
如何让我的程序显示图像对,使它们在3D电视上看起来像3D?有平台独立的方式来完成它吗? (通过平台我的意思是独立于GPU品牌,操作系统,3D电视供应商等)如果没有,哪个更好 - 通过GPU,OS或3D电视锁定?
我想我需要在3D电视上使用HDMI 1.4线? HDMI 1.4可以通过并排方法对立体视觉进行编码。但是如何将这样的编码信号发送到监视器?我会用什么类型的库来做这类事情? Windows DirectShow?
如果DirectShow正确,是否有可用的跨平台?
如果有人问,是的,我已经看到了这个问题: Generating 3D TV stereoscopic output programmatically
但是,如果我错了,请纠正我,这似乎不是我正在寻找的。我没有生成多边形的OpenGL或Direct3D程序,Nvidia卡只需从2个略微偏移的视点渲染场景然后在监视器上显示这2个图像即可进行临时即兴立体视觉 - 我的程序已经 那些图像对并需要显示它们(并且它们不是渲染多边形的结果)。
顺便说一句,我之前从未做过任何主要的多媒体编程,对HDMI,直播,3D电视等知之甚少。所以请原谅我这个问题的任何部分根本没有任何意义。答案 0 :(得分:1)
所以事实证明(相对)容易。
似乎让立体图像对以3D显示的最简单方法是启用全屏模式,并排显示立体图像,并手动设置3D电视以使用并排3D编码。请注意,您可能需要进行一些重新定位和/或缩放以使左/右图像正确排列并显示正确的宽高比。
我认为这种方法应该独立于操作系统和GPU。您只需选择任何能够在屏幕上连续快速显示图像的跨平台库。我用过OpenGL。如果这是滥用OpenGL并且DirectShow是正确的工具,我不知道。但是我查看了DirectShow SDK的例子,并不能真正做出它们的正面或反面(我几乎没有使用Win32 / 64 API的经验,我认为这些是在示例中使用的。)而且DirectShow也不是跨平台的,所以meh
我做的是我有一个paintGL()函数,它由一个计时器以一定的速率调用,每个调用计算一个左右图像,并排显示,做一些定位和缩放以适应适当的屏幕。简而言之,只要您愿意使用并排的简单编码并让3D电视处理其余部分,创建独立于平台的3D输出并不是很难。
旁注,在环顾四周的同时,我也发现OpenGL具有远见,可以包含立体内容界面。显然OpenGL支持四缓冲(双缓冲立体视觉)。有关在4个缓冲区之间切换的功能,请参阅http://www.opengl.org/sdk/docs/man/xhtml/glDrawBuffer.xml。我最终没有使用它(因此无法保证它适合我在上面的问题中描述的特定任务)而且我的理解是它需要特殊的图形卡支持。但我把链接放在这里,以防它对任何人都有用。