Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 23:14

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: AVI abspielen, Problem
BeitragVerfasst: Di Sep 05, 2006 16:56 
Offline
DGL Member

Registriert: So Jul 17, 2005 12:59
Beiträge: 89
Hi,

ich will in meiner Anwendung ein AVI abspielen. Habe auf Nehe dazu auch ein Beispiel gefunden und diesen dann in meine Anwendung portiert.. Leider nicht ganz so erfolgreich. Das AVI File wird zwar abgespielt. Aber es Flackert total, das Quad auf das ich das Frame zeichne wird immer kurz weiß und zeigt dann wieder das Frame an, und flackert so zwischen Weiß und Frame hin und her.

Ich weiß nicht wo der Fehler liegt :(

Hier der entsprechende Code:

Initialization:
Code:
  1.  
  2. hdd := DrawDibOpen;
  3.   glEnable(GL_TEXTURE_2D);                                                      // Zapne texturování
  4.   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);              // Filtry textur
  5.   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
  6.   glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP);                            // Automatické generování koordinátù
  7.   glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_SPHERE_MAP);
  8.    OpenAVI(pchar(ApplicationDir +  'vfx\titles\test.avi'));                                                    // Otevøení AVI souboru
  9.   glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,1024,1024,0,GL_RGB,GL_UNSIGNED_BYTE,data);
  10.  


OpenAVI:
Code:
  1.  
  2. procedure OpenAVI(szFile: LPCSTR);                                              // Otevøe AVI soubor
  3. var
  4.   title: PAnsiChar;                                                             // Pro vypsání textu do titulku okna
  5.   bmi: BITMAPINFO;
  6. begin
  7.   AVIFileInit;                                                                  // Pøipraví knihovnu AVIFile na použití
  8.   if AVIStreamOpenFromFile(pavi,szFile,streamtypeVIDEO,0,OF_READ,nil) <> 0 then // Otevøe AVI proud
  9.     MessageBox(HWND_DESKTOP,'Failed To Open The AVI Stream','Error',MB_OK or MB_ICONEXCLAMATION); // Chybová zpráva
  10.   AVIStreamInfo(pavi,psi,sizeof(psi));                                          // Naète informace o proudu
  11.   width := psi.rcFrame.Right - psi.rcFrame.Left;                                // Výpoèet šíøky
  12.   height := psi.rcFrame.Bottom - psi.rcFrame.Top;                               // Výpoèet výšky
  13.   lastframe := AVIStreamLength(pavi);                                           // Poslední snímek proudu
  14.   mpf := AVIStreamSampleToTime(pavi,lastframe) div lastframe;                   // Poèet milisekund na jeden snímek
  15.   with bmih do
  16.     begin
  17.     biSize := sizeof(BITMAPINFOHEADER);                                         // Velikost struktury
  18.     biPlanes := 1;                                                              // BiPlanes
  19.     biBitCount := 24;                                                           // Poèet bitù na pixel
  20.     biWidth := 1024;                                                             // Šíøka bitmapy
  21.     biHeight := 1024;                                                            // Výška bitmapy
  22.     biCompression := BI_RGB;                                                    // RGB mód
  23.     end;
  24.   bmi.bmiHeader := bmih;
  25.   h_bitmap := CreateDIBSection(DC,bmi,DIB_RGB_COLORS,data,0,0);
  26.   SelectObject(DC,h_bitmap);                                                  // Zvolí bitmapu do kontextu zaøízení
  27.   pgf := AVIStreamGetFrameOpen(pavi,nil);                                       // Vytvoøí PGETFRAME použitím požadovaného módu
  28.   if pgf = nil then                                                             // Neúspìch?
  29.     MessageBox(HWND_DESKTOP,'Failed To Open The AVI Frame','Error',MB_OK or MB_ICONEXCLAMATION);
  30.  
  31. end;
  32.  


GrabFrame:
Code:
  1.  
  2. procedure GrabAVIFrame(frame: integer);                                               // Grabuje požadovaný snímek z proudu
  3. var
  4.   lpbi: PBitmapInfoHeader;                                                            // Hlavièka bitmapy
  5. begin
  6.   lpbi := AVIStreamGetFrame(pgf,frame);                                               // Grabuje data z AVI proudu
  7.   pdata := Pointer(Integer(lpbi) + lpbi.biSize + lpbi.biClrUsed * sizeof(RGBQUAD));   // Ukazatel na data
  8.   DrawDibDraw(hdd,DC,0,0,1024,1024,lpbi,pdata,0,0,width,height,0);                    // Konvertování obrázku na požadovaný formát
  9.  // flipIt(data); // Hab ich mal rausgenommen, vorerst nicht wichtig
  10.   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 1024,1024, GL_RGB, GL_UNSIGNED_BYTE, data);  // Aktualizace textury
  11. end;
  12.  



Die Zeichnen Prozedur:
Code:
  1.  
  2.     OpenGLUtils.enableOrtho();
  3.     glDisable(GL_TEXTURE_2D);
  4.  
  5. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  6. GrabAVIFrame(100);
  7.  
  8. glLoadIdentity;                                                   // Reset matice
  9.   glBegin(GL_QUADS);
  10.     glColor4f(1,1,1,1);
  11.     glTexCoord2f(0,0);                                     // Nastavení hodnoty alfy
  12.     glVertex2f(0,0);
  13.     glTexCoord2f(0,1);                                                // První vertex (0, 0)
  14.     glVertex2f(0,768);                                                // Druhý vertex (0, 480)
  15.     glTexCoord2f(1,1);
  16.     glVertex2f(1024,768);                                              // Tøetí vertex (640, 480)
  17.     glTexCoord2f(1,0);
  18.     glVertex2f(1024,0);                                                // Ètvrtý vertex (640, 0)
  19.   glEnd;
  20.  
  21.     glDisable(GL_TEXTURE_2D);
  22.     OpenGLUtils.disableOrtho();
  23.  


Hoffe Ihr könnt mir helfen..

Grüße
Passi


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 04, 2006 16:09 
Offline
DGL Member

Registriert: Mo Jul 17, 2006 13:16
Beiträge: 69
*BUMP*

Gibts dazu schon ne Lösung? Habe aktuell das gleiche Problem...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 04, 2006 20:35 
Offline
DGL Member

Registriert: Mo Jul 17, 2006 13:16
Beiträge: 69
Also das eigentliche Problem scheint wohl daran zu liegen, dass DrawDibDraw(hdd,DC,0,0,1024,1024,lpbi,pdata,0,0,width,height,0) direkt auf den DeviceContext der Anwendung zugreift. Die komplette "Draw"/Zeichnen/Render Prozedur ist somit komplett überflüssig --> Das ist der Fehler.

Die Graphik, also das Bild aus der AVI-Datei soll auf die Textur gezeichnet werden, nicht (direkt) auf den Bildschirm. Dadurch kommt sonst das Flackern zustande. Die Frage ist, warum klappt das in der Beispielanwendung?

Wie macht man das, dass DrawDibDraw direkt auf die Textur geht?

Auch wenn man mit CreateDC einen neuen DC für das Video erstellt, wird dieses dann später garnicht mehr dargestellt... (Logischerweise).

Da ich leider mit den reinen Texturen noch nicht so bewandert bin, (ich benutze immer glBitmap2d oder so, also eine Komponente, keine reine Integer-ID) hoffe ich mal von Euch kann wer eine Erklärung abgeben. Thx.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 10, 2006 11:35 
Offline
DGL Member

Registriert: So Jul 17, 2005 12:59
Beiträge: 89
Ich habe das Problem leider auch noch nicht lösen können.

Ich habe hier mal meine Anwendung hochgeladen (bei der Flackert es komischerweise nicht mal mehr, sondern zeigt einfach gar nichts an):

http://www.chris-tec.net/App.rar

Wäre super, wenn sich das mal jemand anschauen könnte.

Grüße
Passi


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 10, 2006 16:51 
Offline
DGL Member

Registriert: Mo Jul 17, 2006 13:16
Beiträge: 69
Wenn du HDD initialisierst, siehst du wenigestens etwas:

Code:
  1.  
  2. procedure TMain.FormActivate(Sender: TObject);
  3. begin
  4.   QueryPerformanceFrequency(QPCFreq);
  5.   InitOpenGL();
  6.   hdd := DrawDibOpen;
  7. // Gerätekontext holen
  8.   DC := GetDC(Handle);
  9.  


Programmier das mal bitte so um, dass nicht immer der selbe Frame zu sehen ist, sonder der durchzählt wie im Beispiel, dann bitte nochmal hochladen...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 10, 2006 17:41 
Offline
DGL Member

Registriert: So Jul 17, 2005 12:59
Beiträge: 89
Hi,

stimmt, dann fängt es an zu flackern.

http://www.chris-tec.net/App.rar


Edit: Was hat es denn mit der Funktion CreateCompatibleDC(0) auf sich? Ist das vllt. der Grund? Kann ich bei mir nicht benutzen um den DC zu erstellen, da dann ein Systemfehler kommt beim Renderkontext aktivieren..


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 10, 2006 18:25 
Offline
DGL Member

Registriert: Mo Jul 17, 2006 13:16
Beiträge: 69
Lol, oO?

Eben habe ich mit meinem Quellcode herumgespielt, und nun scheint es zu gehen.... Oh Wunder der Technik...

Anbei die Quick&Dirty Modifikation von Lektion 35, um sie auf einem eigenen Objekt zu benutzen...

Edit: Siehe unten neueste Version.
Edit: Mit dem Transfer hat es doch nicht so wirklich geklappt. Problem weiter unklar. Siehe unten.


Zuletzt geändert von berens am Mo Dez 11, 2006 11:15, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 10, 2006 20:24 
Offline
DGL Member

Registriert: So Jul 17, 2005 12:59
Beiträge: 89
Und da kannst Du nun noch irgendwas drüber rendern?

Wenn ich da nun noch etwas rendern lasse wird das gar nicht angezeigt.. :(


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 10, 2006 23:31 
Offline
DGL Member

Registriert: Mo Jul 17, 2006 13:16
Beiträge: 69
Ich werde da die nächsten Tage mal ne ordentliche Klasse draus entwickeln und das Ergebnis hier zum download anbieten. Heut kann ich da nicht mehr mit experimentieren, is schon zu spät :/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 11, 2006 09:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
CreateCompatibleDC erzeugt einen neuen DC der kompatibel zu dem ist den du übergibst. Wenn du 0 übergibst dann wird ein MemoryDC erstellt der kompatibel mit dem Bildschirm der Anwendung ist.

Aber zu dem Code habe ich mal ein paar Fragen bzw Anmerkungen.

Wo erstellst du eigentlich deine Textur? Ich sehe zwar, dass du die wunderbar vorbereitet aber nirgendswo sehe ich ein glGenTextures bzw ein anschließendes Binden der Textur.

Das FlipIt ist absolute unnütz. Seit OpenGL 1.2 wird als Texturformat auch GL_BGR (anstelle von GL_RGB) unterstützt. Das kostet dich keine Leistung und Bedarf keiner Umrechenaktionen. Allerdings ist BGR / RGB als Format manchmal ein bisschen langsamer. Das Idealste Format ist BGRA / RGBA. Selbst wenn der Alphakanal nicht genutzt wird ist es das idealste Format. Ich habe zwar keine Ahnung wie man das hinbekommt ohne es manuell umzurechnen. Aber wenn du das bekommen würdest solltest du es bevorzugen. Wenn nicht lohnt es auch nicht es per Hand zu erzeugen. Das ist dann wiederrum langsamer als das Hochladen bei einigen Grafikkarten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 11, 2006 10:07 
Offline
DGL Member

Registriert: Mo Jul 17, 2006 13:16
Beiträge: 69
Hum, alleine der Befehl

// Swapbuffers(FDC);

scheint für das Problem verantwortlich zu sein. Einfach auskommentieren und dann geht es bei mir... Steht der vielleicht auch irgendwo in deinem Quelltext drinnen?


Edit: Na toll, ohne Swapbuffers wird ausser dem Video garnichts mehr gezeichnet. Scheinbar wurde wegen dem Flackern direkt auf den Vordergrundpuffer gezeichnet, der direkt dannach mit dem Hintergrundpuffer überschrieben wurde. Das erklärt auch, wieso du mit deinem Programm keine anderen Sachen mehr siehst...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 11, 2006 10:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Du benutzt doch den DC deines Fensters! Ich denke mal das war der Grund warum dafür ursprünglich ein MemoryDC erstellt wurde. Eben damit Windows nicht direkt auf das Fenster zeichnet sondern in einen Speicher. Ich denke mal das da genau das passiert. Denn ohne SwapBuffers hast du auch keine OpenGL Ausgabe. Die läuft normal ja erst einmal über den dann ignorierten BackBuffer.

Aber noch mal was ich in meinem vorherigen Post schon gesagt habe. Wo erstellst du überhaupt deine Textur? Ohne Textur gibt es logischerweise normal auch kein Bild!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 11, 2006 11:10 
Offline
DGL Member

Registriert: Mo Jul 17, 2006 13:16
Beiträge: 69
Edit: Nur zur Info: dieser komplette Thread bezieht sich auf http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=35 bzw. in Deutsch auf http://www.joachimrohde.com/cms/xoops/modules/articles/article.php?id=45

Es wird jetzt egal sein, wie ich es hier forumliere, Lossy eX wird mir hier gleich ordentlich die Ohren langziehen...

Die Antwort ist: keine Ahnung.

Ich habe bisher quasi Null Plan von OpenGL und muss das beste aus den paar Codeschnipseln machen, die ich habe...

Bitte nicht dass mich hier irgendeiner falsch versteht: die Tutorials hier sind generell super, das Forum nett und hilfsbereit, aaaaber leider bin ich noch nicht mit dem Einarbeiten soweit durch das alles Verstanden zu haben; brauche aber trotzdem schon die Funktionen in meinem Programm :/

Ein weiteres Problem ist, dass es mehrere (wie sagt man?) Libarys,Header,Frameworks, ka. was gibt für mit OpenGL zu arbeiten, z.B. sind meine Texturen alle Komponenten die mit .bind und dann glquads aufgerufen werden, in sofern kam ich noch nie großartig mit sonstigen Texturen in berührung (da diese z.B. auch keine .bmp Dateien etc. laden können, sondern nur mit diesen Zusatzbibliotheken).

Lasst das alles mal hier einfach so (unkommentiert :/ ) stehen, und gehen wir stillschweigend davon aus, dass ich eigentlich keine Ahnung habe, was ich eigentlich hier Programmiere...

Ausgehend von dem wenigen, was ich glaube verstanden zu haben, um Deine Frage mit dem Rendern zu beantworten:
Code:
  1.  
  2.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);                // Hintergrund löschen
  3.   GrabAVIFrame(frame);                                                // <-- hier
  4.   glLoadIdentity;                                                     // Matrix löschen
  5.   glBegin(GL_QUADS);                                                // zeichen
  6.     glTexCoord2f(1.0,1.0); glVertex3f( 11.0, 8.3,-20.0);
  7.     glTexCoord2f(0.0,1.0); glVertex3f(-11.0, 8.3,-20.0);
  8.     glTexCoord2f(0.0,0.0); glVertex3f(-11.0,-8.3,-20.0);
  9.     glTexCoord2f(1.0,0.0); glVertex3f( 11.0,-8.3,-20.0);
  10.   glEnd;
  11.  


Alles AFAIK:
* glClear löscht das komplette Bild mit der aktuellen (Hintergrund?)Farbe
* glLoadIdentity ersetzt die aktuelle Matrix durch die Identitätsmatrix. <-- keine Ahnung was das jetzt für mich bedeutet, steht halt da immer mit dabei
* glquads gibt den Bereich an, der mit der aktuellen Textur gefüllt werden soll. Alle 4 Koordinaten der Ecken. Warum 3d Vertext, ich würde gerne nur 3d benutzen...

Dementsprechend müsste die Funktion GrabAVIFrame den aktuellen Frame als Textur "bind"en, so dass dieser in dem angegebenen Rahmen gezeichnet wird.
Code:
  1.  
  2.   DrawDibDraw(fhdd,fhdc,0,0,256,256,lpbi,pdata,0,0,width,height,0);                    // Konvertování obrázku na požadovaný formát
  3.   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 256, 256, GL_RGB, GL_UNSIGNED_BYTE, data);  // Aktualizace textury
  4.  

Laut http://www.joachimrohde.com/cms/xoops/m ... .php?id=45 bedeuten die Zeilen:
// konvertiere Daten in das geforderte Bitmap Format
DrawDibDraw (hdd, hdc, 0, 0, 256, 256, lpbi, pdata, 0, 0, width, height, 0);
und
// aktualisiere die Textur glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, 256, 256, GL_RGB, GL_UNSIGNED_BYTE, data);
Also scheint es wirklich so zu sein.

Die Textur selbst wird bei TMyF.CreateNew erzeugt, AFAIK
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 256, 256, 0, GL_RGB, GL_UNSIGNED_BYTE, data);

Nun ist die Frage: wie zeichne ich mit dem Video auf den selben DC wie die restlichen Texte, so dass bei SwapBuffers die korrekte Anzeige zu sehen ist?

Vielen Dank schonmal, und habt Nachsicht mit mir ;)

Edit: Aktuelle Quelltextversion siehe weiter unten bzw. nächste Seite(n).


Zuletzt geändert von berens am Mo Dez 11, 2006 17:13, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 11, 2006 12:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Der Quellcode von NeHe ist sehr alt. Vor geraumer Zeit gab es schon einmal zwei User die damit etwas gemacht hatten. Der eine allerdings mit DirectShow. Aber ich glaube das würde alles zu weit führen.

Ich denke ich muss nicht erwähnen, dass es nie gut ist wenn man etwas einfach so macht ohne zu wissen was man dort tut, oder? Dann ist es ehrlich besser wenn es ein bisschen hinten anstellt anstelle es einfach nur zu kopieren. Aber so etwas muss jeder selber wissen.

Zitat:
Die Textur selbst wird bei TMyF.CreateNew erzeugt, AFAIK
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 256, 256, 0, GL_RGB, GL_UNSIGNED_BYTE, data);

Nein wird sie nicht. Zu mindest nicht direkt. Der Speicher für die Textur wird erstellt und initialisiert aber erstellt wird die Textur bei einem Aufruf von glGenTextures. Also dabei wird dann eine Texturobjekt in OpenGL erstellt. Und dieses musst du mit glBindTextur binden bevor du etwas mit der Textur machen möchtest. Also Daten updaten, benutzen etc.

Zitat:
Nun ist die Frage: wie zeichne ich mit dem Video auf den selben DC wie die restlichen Texte, so dass bei SwapBuffers die korrekte Anzeige zu sehen ist?

Das Video muss erst einmal auf einen DC gezeichnet werden. Das sollte natürlich NICHT dein Fenster sein wo du OpenGL darstellst. Also MUSS fhdc mit CreateCompatibleDC(0) erstellt worden sein. Damit erstellt er einen DC der sich im Speicher befindet.

Beim Uplaoden der Daten (glTexImage2D und glTexSubImage2D) musst du auch GL_BGR angeben. Ich befürchte nur, dass die unit OpenGL diese gar nicht kennt. Weil sie ebenso alt ist wie der Code von NeHe.

Der Code ist gekürzt und enthält nur das damit es funktionieren sollte. Den Rest musst du bitte schon selber machen. Wenn ich den Code bereinigen würde könnte ich ihn auch gleich komplett neu schreiben und das möchte ich gerne vermeiden.
Code:
  1. var
  2.   Texture: GLuint;
  3.  
  4. constructor Tmyf.CreateNew(AOwner: TComponent; Dummy: Integer = 0);
  5. begin
  6.   inherited;
  7.   fhdc := CreateCompatibleDC(0);
  8.  
  9.   OpenAVI('c:\1.avi');
  10.  
  11.   glGenTexture(1, Texture); // << Textur erstellen
  12.   glBindTexture(GL_TEXTURE_2D, Texture); // << Binden
  13.   glEnable(GL_TEXTURE_2D);
  14.   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
  15.   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
  16.  
  17.   // Das GL_RGB durch GL_BGR austauschen
  18.   glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 256, 256, 0, GL_BGR, GL_UNSIGNED_BYTE, data);
  19. end;
  20.  
  21. procedure TmyF.GrabAVIFrame(frame: integer);
  22. begin
  23.   DrawDibDraw (...)
  24.  
  25.   glBindTexture(GL_TEXTURE_2D, Texture); // << Binden
  26.   // Das GL_RGB durch GL_BGR austauschen
  27.   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 256, 256, GL_BGR, GL_UNSIGNED_BYTE, data);
  28. end;
  29.  
  30. procedure Tmyf.render(_Sender: TObject);
  31. begin
  32.   glLoadIdentity;
  33.   glBindTexture(GL_TEXTURE_2D, Texture); // << Binden
  34.   glBegin(GL_QUADS);
  35.     ...
  36.   glEnd;
  37.  
  38.   SwapBuffers(FDC); // Buffer wieder tauschen
  39. end;

Zu guter letzt musst du den Backbuffer auch wieder nach vorne bringen sonst siehst du deine Textur natürlich nicht.

PS: Zu der Qualität des Ursprungscodes schweige ich mich am Besten auch mal aus. Ich könnte Dinge sagen die ich später bereuhen würde. :twisted: Das würde eigentlich auch nicht unbedingt dir gelten würde.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 11, 2006 15:01 
Offline
DGL Member

Registriert: So Jul 17, 2005 12:59
Beiträge: 89
Genial, das war tatsächlich das Problem.

Vielen Dank für Deine Hilfe :)!


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.010s | 15 Queries | GZIP : On ]