Videostream, Blending, Hintergrundbild



  • Hallo,

    ich benutzt OpenGL um in einem Videostrom bestimmte Frabwerte auf Transparent zu setzen. Damit will ich ein dahinter liegendes Bild anzeigen.
    Nun möchte ich aber das Bild mit OpenGL-Transformation/Rotation und Scalierung beeinflussen.

    Ich habe dazu eine Funktion

    glPixelStorei(para, para);

    gefunden, die anscheinend das Bild beeinflusst?

    Gibt es weitere Möglichkeiten, vielleicht über ein texturiertes Rechteck?
    Wie ließe es sich hier umsetzen?

    Wer hat dazu eine idee oder Infos?

    // clear old pic + depthbuffer
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
    	glDisable(GL_DEPTH_TEST);// Disable Depth Testing
    
    	glPixelZoom( zoom, -zoom ); // scaling the image and flip horizontally
    
    	glBlendFunc( GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA ); //ideal for pic
    
    	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, stream );
        //stream - only one frame - size 768x576
    
    	glColorMask( 1, 1, 1, 1 ); //enable colors rgba
    	glEnable(GL_BLEND);// Enable Blending
    	glRasterPos3i( sx, sy, 0 );
    
    	// panning an image
    	glPixelStorei(GL_PACK_ROW_LENGTH, ?);   // ?
    	glPixelStorei(GL_PACK_SKIP_PIXELS, ?);   // ?
    	glPixelStorei(GL_PACK_SKIP_ROWS, ?);   // ?
    
    	glDrawPixels( gImXsize, gImYsize, GL_RGBA, GL_UNSIGNED_BYTE, pic );
        //PicSize 1600x1200
    
        //oder kann man hier
    	//glTranslatef();
    	//glRotatef();
    	//glScalef(); mit
        //glRectangle(); /*mit Texture*/
        //anwenden
    
    	// perspectiv correctness on
    	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
    
    	glDisable(GL_BLEND);// Disable Blending
    	glEnable(GL_DEPTH_TEST);// Enable Depth Testing
    

    Dank und Gruß



  • Dieses Problem wurde IMHO nicht ausreichend genau geschildert, um eine hilfreiche Antwort zu geben.
    Fragen clever stellen

    Dieses Posting wurde nicht automatisch generiert sondern per Hand eingefügt. Beschwerden werden trotzdem ignoriert.

    Disclaimer: dies ist kein direkter persönlicher Angriff.

    Bye, TGGC \-/



  • Hi,

    ich möchte einfach das 1600x1200 große Hintergrund bewegen können, also einen Teil davon, nämlich 768x576!
    Da ich dies aber nur mit gl-Objekten machen kann,
    (außer die Funktion glPixelStore funktioniert ähnlich 😕 ) müßte ich das Bild ja als Textur auf einen Körper legen?
    Welcher Körper würde sich dafür eignen?
    Daher ist meine Frage, ob ich in den erwähnten Codeabschnitt eine Funktion an die vorgeschlagene Stelle fügen könnte und ob jemand einen Tipp hat, wie diese Funktion effektiv aussehen könnte?

    Gruß


Anmelden zum Antworten