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

Aktuelle Zeit: Di Jul 15, 2025 18:43

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 26 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: OpenGL in 2D
BeitragVerfasst: Sa Okt 02, 2010 23:24 
Offline
DGL Member

Registriert: Mo Jul 20, 2009 14:52
Beiträge: 37
Hab es soweit übernommen.
Und wir nähern uns dem Ziel ein Stückchen. Also ein weißes Viereck wird angezeigt, was aber leider nicht die Textur enthält.
Dieses folgt jedoch präziese der Maus. Und so langsam verstehe ich auch den Zusammenhang der Parameter. Die Zeichenfläche mit glortho auf die größen von clientwidth und -height zu setzen scheint mir sehr sinnvoll, weil ich dann so ähnlich arbeiten kann, wie ich es früher bei timage.canvas getan habe ;).

Die letzte Zeile (SwapBuffers(DC); ) hast du weggelassen. Ich weiß nicht, ob das absichtlich war. Wenn ich sie weglasse, wird garnichts ausgegeben.

Mir schien es außerdem sinnvoller, glBindTexture in der Renderprocedure aufzurufen, da ich möglicherweise später mal mehrere Texturen in das Projekt einbauen möchte ;).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL in 2D
BeitragVerfasst: So Okt 03, 2010 10:46 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
ich hab die zeile nicht weggelassen, ich rufe sie nur am ende des onIdle Handlers auf dort steht sie in einer ecke wo ich nicht immer rumbastle und stört mich somit nicht ständig

das du nur ein weißes viereck siehst könnte daher kommen das du eventuell glEnable(GL_Texture_2D); vergessen hast?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL in 2D
BeitragVerfasst: So Okt 03, 2010 12:37 
Offline
DGL Member

Registriert: Mo Jul 20, 2009 14:52
Beiträge: 37
Jetzt klappt es.
Die Textur war gedreht, mit veränderten Texturkoordinaten funktioniert es aber:
Code:
    glTexCoord2f(0,0); glVertex3f(mx - half_width,  my -  half_height,  -1);
    glTexCoord2f(0,1); glVertex3f(mx - half_width,  my +  half_height,  -1);
    glTexCoord2f(1,1); glVertex3f(mx + half_width,  my +  half_height,  -1);
    glTexCoord2f(1,0); glVertex3f(mx + half_width,  my -  half_height,  -1);
Mein nächstes Problem: Der Alpha-Kanal der Textur scheint nur 1 bit zu haben. Jeder Pixel ist entwer in der Farbe der Textur oder in der der Hintergrundfarbe, was das Bild sehr eckig wirken lässt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL in 2D
BeitragVerfasst: So Okt 03, 2010 13:14 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
marian hat geschrieben:
Mein nächstes Problem: Der Alpha-Kanal der Textur scheint nur 1 bit zu haben. Jeder Pixel ist entwer in der Farbe der Textur oder in der der Hintergrundfarbe, was das Bild sehr eckig wirken lässt.

Das liegt daran, dass du Alpha-Testing verwendest und nicht Alpha-Blending. Siehe dazu Tutorial Lektion 7.


Zuletzt geändert von mrtrain am Mi Aug 31, 2011 20:28, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL in 2D
BeitragVerfasst: So Okt 03, 2010 13:58 
Offline
DGL Member

Registriert: Mo Jul 20, 2009 14:52
Beiträge: 37
Welche Parameter muss ich bei glBlendFunc benutzen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL in 2D
BeitragVerfasst: So Okt 03, 2010 14:05 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Ich würde das hier vorschlagen:
Code:
  1. glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);


Zuletzt geändert von mrtrain am Mi Aug 31, 2011 20:28, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL in 2D
BeitragVerfasst: Mo Okt 11, 2010 14:15 
Offline
DGL Member

Registriert: Mo Jul 20, 2009 14:52
Beiträge: 37
Danke, das klappt.

Ich habe noch zwei weitere Fragen:
Wie kann man ein Quad um den Mittelpunkt drehen?
Der Code in dem Tutorial klappt nicht (es wird danach nichts mehr angezeigt).
Ich bin mir nicht sicher, aber ich glaube, ich muss es nach dem gedrehten Quad irgendwie wieder zurrücksetzen um die nächsten Quads zu zeichnen. Leider gab es in dem Tutorial keine Angaben dazu.

Wie kann ich ein Quad mit Textur transparent darstellen?
Ich möchte ein Quad mit Textur (und Alpha-Kanal) ausblenden lassen und dafür möchte ich es transparent darstellen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL in 2D
BeitragVerfasst: Mo Okt 11, 2010 22:30 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Zu aller erst verschiebst du den Ursprung ins Zentrum des Quads. dann kannst du per rotate den neuen Winkel setzen und dann zeichnest du das quad.

Wenn du nichts siehst, kann das daran liegen, dass du zu nah an der Szene bist. Verschieb alles etwas weiter weg, und versuch es noch einmal. Schau auch mal das Tutorial_Matrix2 an.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL in 2D
BeitragVerfasst: Di Okt 12, 2010 16:41 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
marian hat geschrieben:
Wie kann ich ein Quad mit Textur transparent darstellen?
Ich möchte ein Quad mit Textur (und Alpha-Kanal) ausblenden lassen und dafür möchte ich es transparent darstellen.

Mit glColor4f kannst du die Farbe der Vertices (und damit die des Quads) festlegen. Der letzte Parameter ist dabei der Alpha-Kanal. Alle vier Werte werden in der Standardeinstellung mit der Texturfarbe multipliziert. Wenn du also z.B.
Code:
  1. glColor4f(1, 1, 1, 0.5);
  2. glBegin(GL_QUADS);
  3. // usw...
  4.  
schreiben tust, ist dein Quad da, wo der Alpha-Wert der Textur eigentlich 1 ist, halbtransparent. Da, wo die Textur 0.5 sagt, ergibt sich ein endgültiger Alpha-Wert von 0.25 usw... :)


Zuletzt geändert von mrtrain am Mi Aug 31, 2011 20:29, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL in 2D
BeitragVerfasst: Di Okt 12, 2010 19:38 
Offline
DGL Member

Registriert: Mo Jul 20, 2009 14:52
Beiträge: 37
Danke für die Antworten, klappt alles wunderbar, und ich muss sagen, mein kleines Projekt macht schon einiges her. ;)

Eine weitere Frage:
Wie kann ich einen Text auf dem Bildschirm ausgeben?
Wenn es dazu ein Tutorial / Wiki-Eintrag gibt, würde ich euch bitten, den zu verlinken, da ich keinen gefunden habe.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL in 2D
BeitragVerfasst: Di Okt 12, 2010 20:15 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Textdarstellung mit OpenGL ist schon etwas komplexer. :roll: Grundsätzlich gibt es zwei Ansätze:
  • Man erstellt sich eine Textur in der alle Zeichen, die man braucht abgebildet sind. Dazu natürlich die uv-Koordinaten. Wenn man den Text darstellt rendert man einfach Vierecke mit den gespeicherten Texturkoordinaten. Bei diesem Verfahren hat man leider den Nachteil, dass die Schriften nicht mehr schön aussehen, wenn man sie skaliert.
  • Eine Alternative wäre, die Zeichen in Vektorform zu speichern (wie Windows es z.B. auch tut) und sie dementsprechend komplexer zu rendern. Das zu implementlieren ist relativ aufwändig und erfordert schon einiges an Zeit. Dafür kann man die Schriften skalieren wie man will, ohne dass es verpixelt aussieht.

Zum Glück bist du nicht der Erste, der vor diesem Problem steht. Die Textsuite von Lossy eX ist in diesem Forum hier recht beliebt und nimmt dem Delphi-Programmierer einiges an Arbeit ab. Allerdings benutze ich sie nicht selber (ich arbeite mit C++), kann dir dazu also keine genaueren Fragen beantworten.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


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.008s | 15 Queries | GZIP : On ]