OpenGL渲染可以用于3D显示器吗?

7
我们正在考虑购买一台3D-ready液晶显示器和一台配备了3D立体视觉图形卡(ATI Radeon 5870或更好)的计算机,用于显示使用OpenGL渲染的某些科学数据的3D效果。 现在我们可以期望GPU、显示器和快门眼镜来处理立体显示,还是需要修改渲染程序? 如果有针对3D立体显示的特定图形编程技术,一些教程链接将非常受欢迎。
1个回答

9

从技术上讲,OpenGL为立体显示提供了支持。关键字是“四缓冲区立体”。您可以使用glDrawBuffer(GL_BACK_LEFT); / *渲染左眼视图* /; glDrawBuffer(GL_BACK_RIGHT); / *渲染右眼视图* /;来切换左右眼渲染。

不幸的是,Quadbuffer立体视图被GPU厂商认为是专业功能。因此,您需要使用NVidia Quadro或AMD / ATI FireGL显卡才能获得支持。

立体渲染不是通过倾斜眼睛完成的,而是通过在投影矩阵中应用“镜头偏移”来完成的。但详细信息有些棘手。我去年做了一个关于它的讲座,但显然我的演示文稿链接失效了。

关键图表如下(它来自我的笔记,是我对Blender进行直接支持立体渲染的补丁)。 Stereoscopy parameters


那是非常有用的信息。Radeon HD5870规格中的“3D立体显示/眼镜支持”让我感到困惑。在Linux上搜索OpenGL四缓冲区后,我怀疑这甚至在Linux上都不可能实现。另一方面,这篇文章谈到了一些无需四缓冲区即可显示立体画面的方法。有没有想法这是否适用于消费级GPU? - subhacom
渲染缓冲区怎么样了?如何与显示器同步交换它们?这种情况下唯一的解决方案是使用两台投影机吗? - Luca
@Luca Piccioni:四缓冲立体声将交换/快门工作委托给驱动程序;在自己的代码中与快门同步是可能的,但不可靠。 - datenwolf
4
没有四缓冲区显示立体画面的几种方法。可能最简单的方法是在双屏幕系统上打开两个OpenGL窗口,并使用被动立体技术,即在两个仔细对准的视频投影仪前安装偏振滤光片,投射到保持极化的银色屏幕上。另一种方法,但需要一些电子技能,是使用Matrox DualHead2Go将2048x768的图像分成两个1024x768并将其同步输出到两个显示器 - 添加一个每帧切换输出的电路,并将同步传递到快门眼镜。 - datenwolf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接