【发布时间】:2012-09-23 15:37:10
【问题描述】:
考虑到对 3D 图形渲染的幼稚看法,立体 3D 渲染似乎对开发人员来说本质上应该是透明的,并且完全是图形硬件和驱动程序的一项功能。无论 OpenGL 窗口在何处显示场景,它都会获取几何、光照、相机和纹理等信息来渲染场景的 2D 图像。
在场景中添加立体 3D 似乎本质上意味着使用两个横向偏移的摄像机,而所有其他场景变量保持不变。唯一的附加信息是使相机相距多远以及使它们的中心光线会聚多远。鉴于此,采用 GL 命令序列并在驱动程序级别交错适当的命令来驱动 3D 渲染似乎是微不足道的。
似乎需要专门编写应用程序才能使用特殊的 3D 硬件架构,这使得实现起来既麻烦又令人望而却步。我们会期望这会成为立体 3D 实现的未来,还是我忽略了太多重要的细节?
在我的具体情况下,我们使用的是 .net OpenGL 视口控件。我最初希望仅仅拥有支持立体的硬件和驱动程序就足以支持立体 3D。
【问题讨论】:
-
using two laterally offset cameras横向到什么?旧相机? OpenGL 没有相机和物体变换的区别。在较新的版本中,它根本不关心这些转换,因为由用户来处理它们。应该如何提取这些信息?另外,您如何处理屏幕外缓冲区?例如,阴影贴图在立体中没有意义。 -
但是:developer.download.nvidia.com/whitepapers/2010/…
Using heuristics, the stereoscopic driver decides which objects need to be rendered per-eye and which do not, building the full left and right eye image in a manner that is transparent to the developer.这叫Passive Stereoization。 -
@Nobody 我会说横向是屏幕的 x 轴,在空间上垂直于相机方向,与 2D 投影中的水平对齐。关于屏幕外缓冲区和阴影贴图,这些是我不完全掌握也不了解其复杂性的东西。也感谢您的论文。
-
其实我可能误解了你的初衷,你是说 OpenGL 不再有或从未有过带有位置、目标和旋转矩阵的相机吗?当然,它至少对与相机视角一致的几何图形应用了一些透视变换?我的印象是 OpenGL 在虚拟 3D 场景中支持 3D 顶点、3D 三角形和任意定位的摄像机。
-
您应该接受 Bahbar 的回答。补充一点,想想基本 GL 1.0 是如何用于进行透视、正交或只是简单的 2d 渲染的。并混合所有这些。你怎么知道什么是什么?