如何在GTX 560及更高版本上使用OpenGL进行立体3D?

如何在GTX 560及更高版本上使用OpenGL进行立体3D?,opengl,3d,glut,nvidia,Opengl,3d,Glut,Nvidia,我正在使用Windows7上运行的开源触觉和3D图形库Chai3D。我已经重写了图书馆做立体三维与Nvidia nvision。我正在使用带有GLUT的OpenGL,并使用glutInitDisplayMode(GLUT|RGB | GLUT|U DEPTH | GLUT|U DOUBLE | GLUT|U立体声)来初始化显示模式。它在Quadro卡上非常有效,但在GTX 560m和GTX 580卡上,它表示不支持像素格式。我知道监视器能够显示3D,我知道卡片能够渲染3D。我试过调整屏幕的分辨率

我正在使用Windows7上运行的开源触觉和3D图形库Chai3D。我已经重写了图书馆做立体三维与Nvidia nvision。我正在使用带有GLUT的OpenGL,并使用glutInitDisplayMode(GLUT|RGB | GLUT|U DEPTH | GLUT|U DOUBLE | GLUT|U立体声)来初始化显示模式。它在Quadro卡上非常有效,但在GTX 560m和GTX 580卡上,它表示不支持像素格式。我知道监视器能够显示3D,我知道卡片能够渲染3D。我试过调整屏幕的分辨率和我能想到的一切,但似乎没有任何效果。我在不同的地方读到,使用OpenGL的立体3D只能在全屏模式下工作。所以,我能想到的这个错误的唯一可能原因是我在窗口模式下启动。如何强制应用程序在启用3D的情况下以全屏模式启动?有人能提供一个使用OpenGL的四缓冲区立体3D的代码示例,它可以在更高版本的GTX模型卡上工作吗?

简单:你不能。不是你想用的方式

有一个预先存在的程序用立体眼镜做事情和做你想做的事情是有区别的。您试图做的是使用OpenGL的内置立体支持:创建立体帧缓冲区的能力,您可以在其中任意渲染左右帧缓冲区

NVIDIA不允许使用非Quadro卡。它的驱动程序中有一些黑客攻击,这些黑客攻击将迫使使用nVision和控制面板的应用程序使用立体声。但是NVIDIA的GeForce驱动程序不允许创建立体帧缓冲区


在你问之前,不,我不知道为什么NVIDIA不让你控制立体声。

你的体验没有技术原因,只是NVIDIA的产品政策。Quadbuffer立体声被认为是一种专业功能,因此NVidia仅在其Quadro卡上提供,即使GeForce GPU也能做到这一点。这不是最近的发展。早在1999年,情况就是这样。例如,我当时(现在仍然)有一个GeForce2 Ultra。但从技术上讲,这是与Quadro相同的芯片,唯一的区别是向系统报告的PCI-ID。你可以通过修补PCI ID(或者修补驱动程序,或者在图形卡PCB上焊接一个额外的电阻),诱使驱动程序认为你有一个Quadro

当时我的GeForce2已经支持Direct3D hack的立体3D模式。当时,驱动程序复制了渲染命令,但对模型视图应用了平移,对投影矩阵应用了倾斜。如今,它实现了着色器和多渲染目标技巧

NVision3D API允许您为特定的眼睛闪烁图像(这是为电影播放器和图像查看器设计的)。但它也允许您模拟四缓冲区立体:不使用GL_BACK_LEFT和GL_BACK_RIGHT缓冲区创建两个帧缓冲区对象,您可以像四缓冲区立体一样绑定和使用它们。渲染后,将生成的图像(作为纹理)blit到NVision3D API


只需50行管理代码,您就可以构建一个在NVision3D和quadbuffer立体声上无缝工作的程序。NVidia所做的是毫无意义的,他们现在应该停止它,并在消费者GPU上正确支持quadbuffer立体声像素格式。

因为我在为自己的游戏研究这个问题,我发现了有人入侵USB协议的链接


我没有完全理解,但在我研究这方面的时候,利用这些信息并不难。因此,为了在应用程序中支持它,您可能必须实现自己的代码,这应该是可能的。不幸的是,一个通用的解决方案会更难,因为这样你就必须破解驱动程序或以某种方式连接到OpenGL库并拦截调用。

好吧,我知道使用DirectX是可能的。那么,OpenGL有什么问题?是否可以使用DirectX初始化3D,然后使用OpenGL绘制所有图形,等等?想想看,我知道我的GTX 580是一个quadro类卡(它使用相同的体系结构)。我听说有些人能够改造车手,使其成为一辆四轮马车。@JohnJenkins:不,不是。D3D没有用于立体渲染的API。你所说的只是一个幕后的司机把戏,仅此而已。D3D11.1将明确支持立体显示,但11.0和所有以前的版本都不支持。你能告诉我一些破解或解决方法吗?我真的需要一个解决方案。我的老板6个月前就想让这一切正常。感谢您的建议。我使用directX与Google Earth合作获得了立体3D,所以我知道这是可能的。我对此做了很多研究,我认为我只是在屏幕模式初始化方面做了一些错误的事情。我正在寻找一个正确的方法来初始化三维OpenGL为以后的模型GTX卡的例子。谢谢。最后是一些答案。你能提供这个管理代码的一个例子或者给我一个源代码吗?如何让眼镜进入3D模式并与光点图像同步?我没有看到任何选择在英伟达控制面板强制3D模式。@ DATEWORKE,你能评论一下新的驱动程序使四缓冲GTX卡?@福巴贝克:我必须要看它。关于立体视觉,我现在主要做VR和HMD的工作,而整个quadbuffer支持对这些人来说不是问题。@datenwolf:你有机会研究一下吗?我对GTX 750 Ti的体验好坏参半。Blender中的Quadbuffer在Blender游戏引擎中工作,但在Blender视口中不工作。我无法让我的任何其他OpenGL立体声程序工作。不知道如何将750改装成