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

Joh*_*ins 3 opengl 3d glut nvidia

我正在使用在Windows 7上运行的开源触觉和3D图形库Chai3D.我已经用Nvidia nvision重写了库来做立体3D.我正在使用带有GLUT的OpenGL,并使用glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE | GLUT_STEREO)来初始化显示模式.它在Quadro卡上运行良好,但在GTX 560m和GTX 580卡上,它表示像素格式不受支持.我知道显示器能够显示3D,我知道这些显卡能够呈现它.我已经尝试调整屏幕的分辨率和我能想到的其他一切,但似乎没有任何效果.我已经在各个地方阅读过使用OpenGL的立体3D仅在全屏模式下工作.因此,我能想到的唯一可能的原因是我在窗口模式下启动.如何在启用3D的情况下强制应用程序以全屏模式启动?任何人都可以使用OpenGL在后来的GTX型号卡上提供四缓冲立体3D的代码示例吗?

dat*_*olf 7

您所经历的不是技术原因,而只是NVidia的产品政策.Quadbuffer立体声被认为是一种专业功能,因此NVidia仅在其Quadro卡上提供它,即使GeForce GPU也可以这样做.这不是最近的发展.早在1999年就是这样的.例如,我当时(当时还有)GeForce2 Ultra.但从技术上讲,这是与Quadro相同的芯片,唯一的区别是PCI-ID报告回系统.人们可以通过修补PCI-ID(通过修补驱动程序或通过在显卡PCB上焊接额外的电阻)来欺骗驾驶员认为你有Quadro.

我的GeForce2已经支持Direct3D黑客的立体3D模式.当时,驱动程序复制了渲染命令,但是对模型视图应用了平移,并将偏移应用于投影矩阵.这些天它实现了一个着色器和多个rendertarget技巧.

NVision3D API允许您为特定眼睛模拟图像(这适用于电影播放器​​和图像查看器).但它也允许你模拟quadbuffer立体声:而不是GL_BACK_LEFT和GL_BACK_RIGHT缓冲区创建两个帧缓冲对象,你绑定和使用它们就好像它们是四缓冲立体声.然后在渲染后将生成的图像(作为纹理)blit到NVision3D API.

只需50行管理代码,您就可以构建一个无缝兼容NVision3D和四缓冲立体声的程序.NVidia所做的事情毫无意义,他们应该立即停止它,并在消费者GPU上正确支持四缓冲立体像素格式.