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

Aktuelle Zeit: Fr Jul 18, 2025 08:02

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 1D-Textur laden/erstellen?
BeitragVerfasst: Fr Jun 19, 2009 21:09 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
hat jemand von euch schonmal versucht ne 1D-Textur zu laden, oder zu erstellen? Ausm gefühl herraus würde ich jetzt einfach eine Textur erstellen, die 1x128px groß ist oder so, aber wie würde ich die Laden und wie legt man da Texturkoordinaten für fest? hat da jemand erfahrung mit, ansonsten tüftel ich einfach mal etwas herum und schreibe meine Erkenntnisse hier hinein.

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 21:14 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mär 30, 2007 18:35
Beiträge: 331
Ich habe es zwar nie gemacht aber ich würde einfach auf glTexImage1D und glTexCoord1f tippen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 21:16 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
Das hört sich stark nach einem tieferen Sinn an^^' Ich probier das mal.

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 19, 2009 21:19 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Funktioniert genauso wie eine 2D-Textur...nur das eben alles 1D ist... ;)

Zum Beispiel nutzt du dann einfach die Funktion glTexImage1D statt glTexImage2D, usw...
Wie das mit den Texturkoordinaten funktioniert bin ich mir gerade nicht sicher. Ich hab solche Texturen bisher nur im Shader benötigt. Wenn man einem Vertex irgendwie nicht nur eine Texturkoordinate geben kann wird wahrscheinlich einfach die erste Koordinate genommen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 20, 2009 08:31 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Du musst als Target natürlich auch GL_TEXTURE_1D benutzen. Sonst wurde schon alles gesagt was man beachten muss.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jun 20, 2009 14:05 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
ganz so einfach will sich das bei mir leider nicht anstellen. ich habe ne *.Raw Datei erstellt, die 1x128px groß ist. Die Datei besitzt keinen Header und ist interleaved mit 24Bit angeordnet (RGB zu je 8 bit). Das Laden der Textur in ein Array klappt wunderbar. Aber das anschließende erstellen der Textur scheitert gnadenlos. Als FehlerMeldung erhalte ich ständig "Der Vorgang ist ungültig". Damit kann ich allerdings nicht viel anfangen. Der relevante Code sieht wie folgt aus:

Das laden der Pixeldaten aus der Datei:
Code:
  1.  
  2.   AssignFile(F,basispfad + '/textures/1d_noon.raw');
  3.   Reset(F,1);
  4.   BlockRead(F, PixelData, Sizeof(T24Bit)*128);
  5.   CloseFile(F);
  6.  

Dort gibts auch kein Problem, lasse ich mir die Farbwerte als Text ausgeben, sehen die Werte vernünftig aus. (100%ig)

Die Textur erstelle ich anschließend folgendermaßen:
Code:
  1.  
  2.   glGenTextures( 1, @RefTex );
  3.   glBindTexture( GL_TEXTURE_1D, RefTex );
  4.   glTexImage1D( GL_TEXTURE_1D, 0 , GL_RGB8, 128, 0, GL_RGB, GL_BYTE, @PixelData);
  5.  


wie man sehen kann nicht sehr viel Code an dem man was falsch machen kann. Die einzigen bedenken die ich habe sind die vorletzten beiden Parameter, bei denen ich mir nicht sicher bin was ich dort verwenden muss. Es handelt sich immerhin um 3*8bit, es kann ja nicht so viel geben was da in Frage kommt. Das Array und T24Bit erstell ich übrigens folgender Maßen:
Code:
  1.  
  2.   T24Bit = packed record
  3.     r,g,b:byte;
  4.   end;
  5.  
  6.   PixelData : array[0..127] of T24Bit;
  7.  


Edit: Ich habs herraußgefunden! Ich habe beim Erstellen der 1D-Textur keine Mipmaps erzeugt, der Min-Filter ist aber auf Mip-Maps eingestellt. Ich habe ihn jetzt einfach auf Gl_Linear eingestellt. Das reicht für mein Vorhaben.

_________________
Klar Soweit?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 22, 2009 23:37 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jan 04, 2008 21:29
Beiträge: 419
Wohnort: Lübeck
Soo meine spielereien waren erfolgreich. Deshalb gibts jetzt hier mal ein Bild, das ich mithilfe der 1D-Texturen erzeugt habe. Nichts besonderes, aber ich finde es trotzdem schon sehr gut geeignet für einfachere Grafiksysteme, die trotzdem schnell und hübsch sein sollen.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

_________________
Klar Soweit?


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]