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 stellenDieses 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ß