[Delphi][GLScene] Okulary anaglifowe (czerwono-niebieskie)

0

Witam :)

Chciałem troszkę urozmaicić to, co tworzę w 3d (delphi + glscene) i wpadłem na pomysł, aby można oglądać scenę przez okulary anaglifowe (np. czerwono-niebieskie). Trochę ogólnej teorii mam - należy ustawić 2 kamery obok siebie (w odległości równej rozstawowi oczu, czyli ok. 7cm), z czego widok z jednej (prawej) będzie rzutowany w kanale czerwonym całego obrazu. Tylko jak to osiągnąć programując w delphi i glscene? W jaki sposób można modyfikować to, co mi glscene wyświetla? (rozbić na kanały rgb i potem złożyć zamieniając kanał R na kanał R z drugiej kamery ?)

Pozdrawiam
Derdiusz

0

A zerknales moze do czegos takiego, jak GLSceneViewer.Buffer? Tam jest np. AmbientColor i rozne inne :)

0
WIktorDelphi napisał(a)

A zerknales moze do czegos takiego, jak GLSceneViewer.Buffer? Tam jest np. AmbientColor i rozne inne :)

To nie to...

Ogólnie udało mi się dojść do pewnych wniosków i efektów. Aby wyrenderować obraz skłądający się np. tylko ze składowej R należy do sceny dodać TGLDirectOpenGL (na samej górze listy!) i w metodzie onRender wstawić:

procedure Tfrm_main.GLDirectOpenGL1Render(Sender: TObject; var rci: TRenderContextInfo);
begin

glColorMask(true,false,false,true);

end;

Efekt jest widoczny, ale nie mam pojęcia w jaki sposób połączyć ten widok z widokiem z drugiej kamery (używając innej składowej).

Próbowałem zrobić to w ten sposób:

glColorMask(true,false,false,true);
sceneViewer.camera := cam1;

glColorMask(false,false,true,true);
sceneViewer.camera := cam2;

Niestety, to nie działa z oczywistych względów: nie wyrenderowałem widoku po zmianie kamery... próbowałem użyć

sceneViewer.Buffer.Redner; 

ale i to nie pomogło... jak tego dokonać ?

Pozdrawiam
Derdiusz

0

Od właśnie takich rzeczy są shadery (GLSL, Cg/HLSL).

0
Szczawik napisał(a)

Od właśnie takich rzeczy są shadery (GLSL, Cg/HLSL).

A czy shader jest w stanie wyrenderować widok z dwóch kamer ?

Pzdr.
Derdiusz

1 użytkowników online, w tym zalogowanych: 0, gości: 1