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

Aktuelle Zeit: Mi Jul 09, 2025 20:48

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: texturen laden
BeitragVerfasst: Fr Jun 23, 2006 12:23 
Offline
DGL Member

Registriert: Mi Jun 21, 2006 09:00
Beiträge: 2
hi @ll :) ich hab n prob mit dem texturen laden wie beschrieben in http://wiki.delphigl.com/index.php/Tutorial_lektion4

da is die rede von arrays in diesem gluint (dort TexID genannt)

Code:
  1.  
  2. procedure tform1.init;
  3.   var
  4.   tex1:psdl_surface;
  5.   texture1:gluint;
  6. begin
  7.   tex1 := img_load(pchar(extractfiledir(paramstr(0))+'/katze.jpg'));
  8.   if assigned(tex1) then
  9.   begin
  10.     glgentextures(1,@texture1);
  11.     glbindtexture(gl_texture_2d,texture1);
  12.     gltexparameteri(gl_texture_2d,gl_texture_mag_filter,gl_linear);
  13.     gltexparameteri(gl_texture_2d,gl_texture_min_filter,gl_linear);
  14.     glteximage2d(gl_texture_2d,0,3,tex1^.w,tex1^.h,0,gl_rgb,gl_unsigned_byte,tex1^.pixels);
  15.     sdl_freesurface(tex1);
  16.   end
  17.   else
  18.   showmessage('texture error');
  19.  


mein ziel: katze2 und katze3 in einem array [1..3] of gluint unterzubringen und beliebig bei meinen quadraten aufrufen koennen :/
ich ralls nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 23, 2006 13:00 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ein Array ist ja nur eine aneinander Reihung von Werten.

Das Einzige was du machen müsstest wäre jetzt also ein Array zu definieren und dann dort deine Texturen abzulegen. Du kannst da entweder jede Textur einzeln erstellen und die TexturIDs, mit denen wird immer gearbeitet, dann in einem Array ablegen oder du erstellst gleich 3 Texturen und benutzt diese. Eine Textur zu erstellen ist in OpenGL noch föllig untragisch. Er das Hinzufügen des Daten ist das interessante.

Ach ja. Und deine TexturIDs sollten keine lokale Variablen sein. Besser wäre es wohl diese als Bestandteil deines Forms zu machen.

Code:
  1. type
  2.   tform1 = class
  3.  
  4.   private
  5.     fTextures : array[1..3] of gluint;
  6.   public
  7.   end;
  8.  
  9. procedure tform1.init;
  10. var
  11.   temp:psdl_surface;
  12. begin
  13.   glgentextures(3, @fTextures[1]);
  14.   // Damit wird die erste Stelle des Array übergeben und angegeben er solle 3 Texturen erstellen.
  15.   // Man könnte auch jede Textur extra erstellen, aber wenn du sowieso 3 benötigst.
  16.   // glgentextures(1, @fTextures[1]);
  17.   // glgentextures(1, @fTextures[2]);
  18.   // glgentextures(1, @fTextures[3]);
  19.  
  20.   temp := img_load(pchar(extractfiledir(paramstr(0))+'/katze.jpg'));
  21.   if assigned(temp) then begin
  22.     glbindtexture(gl_texture_2d, fTextures[1]);
  23.     gltexparameteri(gl_texture_2d, gl_texture_mag_filter, gl_linear);
  24.     gltexparameteri(gl_texture_2d, gl_texture_min_filter, gl_linear);
  25.     glteximage2d(gl_texture_2d, 0, 3, temp^.w, temp^.h, 0, gl_rgb, gl_unsigned_byte, temp^.pixels);
  26.     sdl_freesurface(temp);
  27.   end else
  28.     showmessage('texture error');
  29. end;


Und dann entsprechend noch die anderen Laden. Wenn du die IDs wieder bindest und dann deine Flächen zeichnest dann solltest du diese sehen. Steht aber im tut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 23, 2006 13:24 
Offline
DGL Member

Registriert: Mi Jun 21, 2006 09:00
Beiträge: 2
das dieses gen textures einmal ganz oben stehn soll war wohl der knackpunkt :P danke


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 23, 2006 15:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ne nicht direkt. Der Knackpunkt ist eigentlich, dass du das Ergebniss von dem GenTextures auch außerhalb deiner Funktion zur Verfügung hast. Sonst wüsstest du nicht wissen welche Nummern deine Texturen haben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 23, 2006 15:48 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Naja, Delphi hat doch auch HashMaps oder? Am einfachsten den Texturnamen mit der entsprechenden Nummer in der HashMap speichern :)
So muss man sich um die Nummer sehr wenig Gedanken machen :)

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 23, 2006 16:20 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
@evil: Gewiss macht es Sinn einen kleinen Texurmanager zu schreiben (Bomberman-Tutorial oder easySDL) der mit Namen auskommt. Schreibst Du diesen dann jedoch in eine lokale Variable wirst Du auch nicht viel Spass damit haben ;)

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 23, 2006 17:00 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Phobeus hat geschrieben:
@evil: Gewiss macht es Sinn einen kleinen Texurmanager zu schreiben (Bomberman-Tutorial oder easySDL) der mit Namen auskommt. Schreibst Du diesen dann jedoch in eine lokale Variable wirst Du auch nicht viel Spass damit haben ;)

Kommt drauf an, wenn es ein Singleton ist kann es einem egal sein ob lokal oder global ;)

_________________
(\__/)
(='.'=)
(")_(")


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 23, 2006 22:09 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Warum überhaupt Nummern oder Namen ? Am besten ist ja wenn man eine Referenz auf ein Objekt hat, dass die TextureID, den Namen usw.. speichert.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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 | 16 Queries | GZIP : On ]