2011-08-11 9 views
8

Mam aplikację OpenGL, która przesyła stereoskopowe wideo 3D do gotowych telewizorów przez HDMI, ale obecnie wymaga, aby wyświetlacz obsługiwał metody sprzed 1.4a, wybierając ręcznie odpowiedni format (obok siebie, góra - dno, itp.). Jednak teraz mam urządzenie, które muszę obsługiwać, które TYLKO obsługuje sygnały HDMI 1.4a 3D, co, jak rozumiem, jest jakimś pakietem wysłanym na wyświetlacz, który mówi mu, w jakim formacie znajduje się wideo 3D. Używam NVIDIA Quadro 4000 i chciałbym wiedzieć, czy możliwe jest wyprowadzenie mojego wideo (lub wskazanie karty wideo) w taki sposób, aby standardowa telewizja 3D wyświetlała właściwy format, podobny do 3D Blu-ray lub innego 1.4a kompatybilne urządzenie, bez konieczności ręcznego wybierania określonego trybu 3D. czy to możliwe?Jak mogę wyprowadzić stereoskopowy sygnał zgodny ze standardem HDMI 1.4a z aplikacji OpenGL na telewizor 3D?

+0

Odpowiedziałem na to tutaj: http://stackoverflow.com/questions/6827737/how-do-i-output-3d-images-to-my-3d-tv/6828590#6828590 – datenwolf

+0

To Pytanie nie jest związane z HDMI 1.4a, mówi tylko o używaniu quad-bufora, którego nie używam. Wysyłam sygnał w lewo/w prawo lub góra/dół do telewizora, ale telewizor musi wiedzieć, jaki format wysyłam w jakiś sposób, BEZ ręcznej interwencji (jak opisano w standardzie 1.4a) Karta wideo musi dać wyświetlacz ta informacja w jakiś sposób, po prostu nie wiem jak to zrobić lub jeśli jest to możliwe. – bparker

+0

Nie powinieneś samodzielnie układać ramek. Zadaniem karty graficznej jest generowanie stosu ramek HDMI-1.4 ze zdjęć renderowanych do buforów quad. Całe urządzenie HDMI-1.4 jest całkowicie nieistotne dla programistów aplikacji. Jest to rzecz, o którą dbają deweloperzy i inżynierowie elektrycy. Nie ty. – datenwolf

Odpowiedz

2

Nie widzę bezpośredniej odpowiedzi na pytanie.

HDMI 1.4a definiuje dane meta w celu opisania formatu 3D. video_format 010 oznacza 3D 3d_structure 0000 klatek pakowanie, 0110 top-bottom, 1000 side-by-side

Ale, jeśli kierowca nie ma API, że trzeba zmienić swój kod (zakładając, że jest otwarty lub masz dostęp)

1

Jeśli pozwalają na to sterowniki, można utworzyć kontekst renderowania stereo z czterema buforami. W tym kontekście występują dwa bufory zwrotne i dwa bufory przednie, jedna para dla lewego oka i jedna para dla prawej. Wyrenderujesz jeden bufor zwrotny (GL_BACK_LEFT), a następnie drugi (GL_BACK_RIGHT), a następnie zamienisz je standardową funkcją wymiany.

Tworzenie kontekstu QBS wymaga kodowania specyficznego dla platformy. Jeśli jesteś w systemie Windows, musisz wybrać format pikseli z quad-buforami.

Jest to możliwe tylko, jeśli pozwalają na to kierowcy. Nie mogą. A jeśli nie, nic nie możesz zrobić.

+0

Wszystkie sterowniki Quadro pozwalają na czterokanałowe stereo. – eile

+1

Nie widzę, w jaki sposób quad-buffer jest w ogóle powiązany. HDMI 1.4a mówi, że musisz określić dokładny układ twoich klatek (obok siebie, z góry na dół, sekwencje klatek itp.) wewnątrz pakietów wysyłanych do monitora, które zakładam, że tylko sterownik karty graficznej ma zrobić. – bparker

+1

@bparker: Wszystko, co HDMI 1.4a, nie ma znaczenia, jeśli nie możesz faktycznie renderować do wielu buforów, aby sterownik mógł je następnie spakować tak, jak wymaga tego HDMI. Lub mówiąc inaczej, jeśli możesz stworzyć kontekst QBS, wtedy sterownik wymyśli, jak go wprowadzić na ekran. Jeśli nie możesz stworzyć kontekstu QBS, nie będziesz w stanie uzyskać quad-buffering. Nie przez OpenGL. –

0

Jeśli aplikacja OpenGL dzieje użyć wystarczająco prosty podzbiór OpenGL dodaje może działać:

  1. Korzystając GLDirect dynamicznie konwertować OpenGL wzywa do DirectX.
  2. Użyj Nvidia 3DTV Play, aby automatycznie zestroić i spakować sygnał przez HDMI 1.4.
+0

Okay, więc najpierw radzisz sobie stracić platformę, a po drugie, nawet stracić cross-GPU'ness. Świetna odpowiedź. –

Powiązane problemy