Как вывести стереоскопический сигнал, совместимый с HDMI 1.4a, из приложения OpenGL на 3D-телевизор?

У меня есть приложение OpenGL, которое выводит стереоскопическое 3D-видео на стандартные телевизоры через HDMI, но в настоящее время оно требует, чтобы дисплей поддерживал методы ручного выбора правильного формата до версии 1.4a (бок о бок, сверху вниз). и т.д). Однако теперь у меня есть устройство, которое мне нужно поддерживать, которое поддерживает ТОЛЬКО 3D-сигналы HDMI 1.4a, которые, как я понимаю, представляют собой какой-то пакет, отправляемый на дисплей, который сообщает ему, в каком формате находится 3D-видео. Я использую NVIDIA Quadro 4000, и я хотел бы знать, возможно ли вывести мое видео (или сообщить видеокарте, как это сделать) таким образом, чтобы стандартный 3DTV увидел правильный формат, аналогичный 3D Blu-ray или другому 1.4a. -совместимое устройство, без необходимости вручную выбирать определенный режим 3D. Это возможно?


person bparker    schedule 11.08.2011    source источник
comment
Я ответил здесь: stackoverflow.com/questions/6827737/   -  person datenwolf    schedule 12.08.2011
comment
Этот вопрос не связан с HDMI 1.4a, он говорит только об использовании четырехъядерного буфера, который я не использую. Я посылаю на телевизор левый/правый или верхний/нижний сигнал, но телевизор должен знать в каком формате я его посылаю как-то, БЕЗ ручного вмешательства (как описано в стандарте 1.4а) Видеокарта должна отдавать на дисплей эту информацию каким-то образом, я просто не знаю, как это сделать и возможно ли это.   -  person bparker    schedule 26.08.2011
comment
Вы не должны делать укладку фреймов самостоятельно. Задача видеокарты — генерировать стек кадров HDMI-1.4 из изображений, отрендеренных в четырехъядерные буферы. Вся эта штука с HDMI-1.4 совершенно не имеет отношения к программистам приложений. Это то, о чем должны заботиться разработчики драйверов и инженеры-электрики. Не вы.   -  person datenwolf    schedule 26.08.2011
comment
@datenwolf Когда я выполняю рендеринг в четырехъядерный буфер, видеокарта не выводит сигнал HDMI 1.4 ... есть идеи, что я делаю неправильно?   -  person bparker    schedule 07.04.2012
comment
Возможный дубликат Как мне вывести 3D-изображения в мой 3D ТВ?   -  person user2284570    schedule 16.07.2017


Ответы (3)


Я не вижу прямого ответа на вопрос.

HDMI 1.4a определяет метаданные для описания формата 3D. video_format 010 означает 3D 3d_structure 0000 упаковка кадров, 0110 сверху вниз, 1000 бок о бок

Но если у драйвера нет API для этого, вам нужно изменить его код (при условии, что он открыт или у вас есть доступ)

person user1477675    schedule 24.06.2012

Если ваши драйверы это позволяют, вы можете создать контекст стереорендеринга с четырьмя буферами. Этот контекст имеет два задних буфера и два передних буфера, одну пару для левого глаза и одну пару для правого. Вы выполняете рендеринг в один задний буфер (GL_BACK_LEFT), затем в другой (GL_BACK_RIGHT), затем меняете их местами с помощью стандартной функции подкачки.

Создание контекста QBS требует кодирования для конкретной платформы. Если вы работаете в Windows, вам нужно выбрать формат пикселей с четырьмя буферами.

Это возможно только в том случае, если ваши драйверы позволяют это. Они не могут. А если их нет, то ничего не поделаешь.

person Nicol Bolas    schedule 11.08.2011
comment
Все драйверы Quadro поддерживают стерео с четырехкратной буферизацией. - person eile; 12.08.2011
comment
Я вообще не вижу, как четырехъядерный буфер связан. HDMI 1.4a говорит, что вы должны указать точную компоновку ваших кадров (бок о бок, сверху вниз, последовательность кадров и т. д.) внутри пакетов, которые отправляются на монитор, что, как я предполагаю, получает только драйвер видеокарты. сделать. - person bparker; 26.08.2011
comment
@bparker: Все, что связано с HDMI 1.4a, не имеет значения, если вы не можете на самом деле выполнить рендеринг в несколько буферов, чтобы драйвер мог затем связать их так, как они нужны HDMI. Или, другими словами, если вы можете создать QBS-контекст, то драйвер сам разберется, как вывести его на экран. Если вы не можете создать контекст QBS, то вы не сможете получить квадро-буферизацию. Не через OpenGL. - person Nicol Bolas; 26.08.2011
comment
@NicolBolas Простого рендеринга левого/правого глаза с помощью четырехкратной буферизации кажется недостаточно, чтобы драйвер nvidia выдавал сигнал HDMI 1.4 ... есть идеи, что я делаю неправильно? - person bparker; 07.04.2012

Если ваше приложение OpenGL использует достаточно простое подмножество OpenGL, может работать следующее:

  1. Используйте GLDirect для динамического преобразования вызовов OpenGL в DirectX.
  2. Используйте Nvidia 3DTV Play для автоматической стереофонической обработки и упаковки сигнала через HDMI 1.4.
person Christopher Bruns    schedule 18.06.2012
comment
Итак, во-первых, вы советуете отказаться от кроссплатформенности, а во-вторых, вообще отказаться от кроссплатформенности. Отличный ответ. - person Hi-Angel; 02.03.2016