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ß


  • Mod

    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();


Log in to reply