如何将 HDMI 1.4a 兼容的立体信号从 OpenGL 应用程序输出到 3DTV?
我有一个 OpenGL 应用程序,可以通过 HDMI 将立体 3D 视频输出到现成的电视,但它目前要求显示器支持 1.4a 之前的手动选择正确格式的方法(并排、上下ETC)。但是,现在我需要支持一个仅支持 HDMI 1.4a 3D 信号的设备,据我了解,这是发送到显示器的某种数据包,告诉它 3D 视频的格式。我正在使用NVIDIA Quadro 4000,我想知道是否可以以标准 3DTV 看到正确格式的方式输出我的视频(或告诉显卡如何输出),类似于 3D 蓝光或其他 1.4a 兼容设备,无需手动选择特定 3D 模式。这可能吗?
I have an OpenGL application that outputs stereoscopic 3D video to off-the-shelf TVs via HDMI, but it currently requires the display to support the pre-1.4a methods of manually choosing the right format (side-by-side, top-bottom etc). However, now I have a device that I need to support that ONLY supports HDMI 1.4a 3D signals, which as I understand it is some kind of packet sent to the display that tells it what format the 3D video is in. I'm using an NVIDIA Quadro 4000 and I would like to know if it's possible to output my video (or tell the video card how to) in a way that a standard 3DTV will see the correct format, similar to a 3D Blu-ray or other 1.4a-compatible device, without having to manually select a certain 3D mode. Is this possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我没有看到这个问题的直接答案。
HDMI 1.4a 定义元数据来描述 3D 格式。
video_format 010 表示 3D
3d_struct 0000 框架包装,0110 上下,1000 并排
但是,如果驱动程序没有相应的 api,则需要更改其代码(假设它是打开的或您有权访问)
I don't see a direct answer for the question.
HDMI 1.4a defines meta data to describe 3D format.
video_format 010 means 3D
3d_structure 0000 frame packing, 0110 top-bottom, 1000 side-by-side
But, if the driver doesn't have an api for that, you need to change its code (assuming it's open or you have access)
如果您的驱动程序允许,您可以创建四缓冲区立体渲染上下文。该上下文有两个后缓冲区和两个前缓冲区,一对用于左眼,一对用于右眼。您渲染到一个后台缓冲区 (GL_BACK_LEFT),然后渲染到另一个后台缓冲区 (GL_BACK_RIGHT),然后使用标准交换函数交换它们。
创建 QBS 上下文需要特定于平台的编码。如果您使用的是 Windows,则需要选择具有四缓冲区的像素格式。
这只有在您的驱动程序允许的情况下才有可能。他们可能不会。如果他们不这样做,你就无能为力。
If your drivers allow it, you can create a quad-buffer stereo rendering context. This context has two back buffers and two front buffers, one pair for the left eye and one pair for the right. You render to one back buffer (GL_BACK_LEFT), then the other (GL_BACK_RIGHT), then swap them with the standard swap function.
Creating a QBS context requires platform-specific coding. If you're on Windows, you need to pick a pixel format with quad-buffers.
This is only possible if your drivers allow it. They may not. And if they don't there is nothing you can do.
如果您的 OpenGL 应用程序碰巧使用了足够简单的 OpenGL 子集,则以下方法可能有效:
If your OpenGL application happens to use a sufficiently simple subset of OpenGL, the following might work: