FrameBuffer manipulieren?
-
Hallo,
ich arbeite mit einem Chromakey-Verfahren um die Alpha-Werte eines Videostreams auf transparent zu setzen. An den transparenten Stellen kommt dann ein Bild zum Vorschein.
Nun ist es aber so, das ich, wenn ich die Kamera bewege, die den Videostrom liefert, das Bild sich ja scheinbar mit bewegt.
Ich habe aber eine Transformations-Matrix, in welcher die Bewegung der Kamera steht. Mit dieser Matrix will ich das Hintergrundbild so beeinflussen, das es scheinbar fest an einem Punkt stehen bleibt und beim Kameraschwenk nicht mehr mitbewegt wird.Die Matrix ist ein
double mat[3][4]
Kennt jemand eine Funktion in OpenGL mit der ich solche Positionsmanipulationen im Framebuffer durchführen kann?
Ich denke in diesen Codeabschnitt müßte ich eine solche Funktion einfügen.
Code für ersetzen der Bildinfos:glDisable(GL_DEPTH_TEST);// Disable Depth Testing glPixelZoom( zoom, -zoom ); glBlendFunc( GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA ); glColorMask( 1, 1, 1, 1 ); //enable colors rgba glDisable(GL_BLEND);// Disable Blending glRasterPos3i( sx, sy, 0 ); glDrawPixels( gImXsize, gImYsize, GL_BGRA, GL_UNSIGNED_BYTE, image ); glColorMask( 1, 1, 1, 1 ); //enable colors rgba glEnable(GL_BLEND);// Enable Blending glRasterPos3i( sx, sy, 0 ); glDrawPixels( gImXsize, gImYsize, GL_RGBA, GL_UNSIGNED_BYTE, pic ); glDisable(GL_BLEND);// Disable Blending glEnable(GL_DEPTH_TEST);// Enable Depth Testing
Dank und Gruß
-
nimm eine box auf die du das bild als textur draufpackst, wenn du die kamera bewegst sollte die box weiterhin an ihrem platz liegen, du mußt dann nur noch dafür sorgen dass die box so positioniert ist dass sie auf deine gewünschte weise 'stillsteht'
rapso->greets();