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

Aktuelle Zeit: Do Mai 16, 2024 14:55

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Texturen tauschen/berechnen
BeitragVerfasst: Sa Mai 17, 2014 15:03 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 12, 2013 07:45
Beiträge: 61
Programmiersprache: Turbo Delphi 2006
Hallo,

mich beschäftigen derzeit 3 Fragen zum Thema Texturen.

kann man eine Textur aus einem TBitmap erstellen? (Ich nutze die glBitmap zum Texturen laden.)
Wie kann man eine verwendete Textur gegen eine andere austauschen?
In den Tuts werden die Texturen am Ende nie freigegeben - sollte man das nicht? und wie macht man das überhaupt?

Twist


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen tauschen/berechnen
BeitragVerfasst: Sa Mai 17, 2014 20:10 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2067
Programmiersprache: C++
Zu 1.:
Ja sollte gehen, du musst nur an die Pixeldaten kommen und das entsprechende Format kennen. Ob glBitmap dir helfen kann, kann ich dir gerade nicht sagen.

Zu 2.:
Z.B. mit glTexSubImage.

Zu 3.:
Es gehört sich an sich aufzuräumen, von daher sollte man mit glDeleteTexture sie am Ende löschen. Aber: Da das Programm danach beendet wird, wird es auch automatisch freigegeben weshalb die Nicht-Freigabe im Tutorial kein Fehler ist.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen tauschen/berechnen
BeitragVerfasst: Sa Mai 17, 2014 22:31 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 10, 2011 19:00
Beiträge: 43
Programmiersprache: FreePascal , C++
Zum erstellen einer Textur aus einer TBitmap:
Ob glBitmap da etwas bietet kann ich leider auch nicht sagen; ist an sich aber auch nicht wichtig weil es ziehmlich simpel ist.
Das selbe Problem ist mir vor ein paar Tagen über den weg gelaufen und ich hab auch eine Lösung gefunden gefunden (sicher nicht die beste oder schnellste reicht für mich aber; vllt hilft es dir ja :) )

Im Prinzip brauchst du nur die Frabwerte der einzelnen Bildpunkte hintereinander weg in ein array zu schreiben und dieses an glTexImage2D(...); zu übergeben.
Dabei kannst du ja selbst entscheiden wie du die Rot-, Grün-, Blau-Komponente (und eine eventuelle Alpha-Komponente anordnest). Das musst du dann bei glTexImage2D im 7. Parameter angeben. Die anderen Parameter sind im Wiki-Eintrag dazu beschrieben.

Beim Laden der Farbwerte ins Array ist mir noch aufgefallen das es viel zu langsam ist die einfachste Methode über Bitmap.Canvas.Pixels[x,y]
zu wählen. Nehm lieber das schnelle scanline(). Dazu kann ich die leider nicht mehr sagen da das bei Lazarus nicht so einfach geht und ich es dementsprechend nicht testen kann... aber Google sollte genug Informationen dazu geben. :)

LG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen tauschen/berechnen
BeitragVerfasst: So Mai 18, 2014 08:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 12, 2013 07:45
Beiträge: 61
Programmiersprache: Turbo Delphi 2006
Danke, da kann ich ja mal rumprobieren. scanlines habe ich schon mal arg gequält müsste ich nur mal den alten Code raussuchen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen tauschen/berechnen
BeitragVerfasst: So Mai 18, 2014 12:31 
Offline
DGL Member

Registriert: Di Jun 12, 2012 21:26
Beiträge: 112
Programmiersprache: Delphi
Hallo,

so müsste es ungefähr funktionieren (nicht getestet):
Code:
  1. Var TmpBitmap:TBitmap;
  2. ...
  3. TmpBitmap:=TBitmap.Create;
  4.   //entweder...
  5.   TmpBitmap.Width:=512;
  6.   TmpBitmap.Height:=512;
  7.   //oder aus Datei laden:
  8.   TextureBmp.LoadFromFile();
  9.   TextureBmp.PixelFormat:=pf24Bit; //bei Bedarf
  10. ....
  11. TmpBitmap.Free;
  12.  


Code:
  1. Var BmpTex:tglBitmap2d;
  2. ...
  3. BmpTex:=TglBitmap2d.Create; //Beim Programmstart
  4. ...
  5.   BmpTex.AssignFromBitmap(TmpBitmap); //Bitmap der Textur zuweisen
  6.   BmpTex.AddAlphaFromColorKey(0,0,0); //z.B. für Schwarz bei Bedarf
  7.   BmpTex.GenTexture(False); //Textur erstellen
  8. ...
  9. BmpTex.Free; //Beim Programmende
  10.  

Zum Nutzen der Textur:
Code:
  1.  
  2. BmpTex.Bind; //Textur einbinden
  3. ...
  4. BmpTex.UnBind;
  5.  


Für mehrere Texturen kannst Du ein Array of tglBitmap2d nutzen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen tauschen/berechnen
BeitragVerfasst: So Mai 18, 2014 15:58 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
Beim Laden der Farbwerte ins Array ist mir noch aufgefallen das es viel zu langsam ist die einfachste Methode über Bitmap.Canvas.Pixels[x,y]

Zu diesme Thema hat mit mal jemand ein Link gezeigt, vielleicht hilft es weiter, ich konnte leider nicht viel damit anfangen.
Link

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.024s | 17 Queries | GZIP : On ]