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

Aktuelle Zeit: Do Mär 28, 2024 16:03

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Okt 11, 2016 10:44 
Offline
DGL Member

Registriert: Mo Feb 27, 2012 14:34
Beiträge: 25
Programmiersprache: Pascal
Hallo,

ich möchte gerne Farbverläufe mithilfe von Texturen erzeugen. Die Farben sollen während der Laufzeit anpassbar sein.
Jetzt habe ich folgenden Code:

Code:
  1.  
  2. type
  3.  
  4.   PRGB = ^TRGBA;
  5.   TRGBA = record
  6.     r : byte;
  7.     g : byte;
  8.     b : byte;
  9.     a : byte;
  10.   end;
  11.  
  12. var
  13.   x : Integer;
  14.   TexData : PByteArray;
  15.  
  16. begin
  17.  
  18.   getmem(TexData, 256*Sizeof(TRGBA));
  19.  
  20.   For x := 0 to 255 do
  21.   begin
  22.     TexData^[x*4+0] := x;      //r
  23.     TexData^[x*4+1] := 100;  //g
  24.     TexData^[x*4+2] := 100;  //b
  25.     TexData^[x*4+3] := 1;     //a
  26.   end;  
  27.  
  28.   ...
  29.  
  30.   glGenTextures(1, @ColorTex[0]);
  31.   glBindTexture(GL_TEXTURE_1D, ColorTex[0]);
  32.  
  33.   glTexImage1D(GL_TEXTURE_1D,0,GL_RGBA,256,0,GL_RGBA,GL_UNSIGNED_BYTE, TexData);
  34.  
  35.   freemem(TexData, 256*Sizeof(TRGBA));  
  36.  
  37.  


Irgendwas mache ich falsch, jedenfalls werden keine Farben angezeigt.


Zuletzt geändert von DAP am Di Okt 11, 2016 20:48, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen zur Laufzeit erstellen
BeitragVerfasst: Di Okt 11, 2016 12:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 587
Programmiersprache: C++
Hallo, zwei Sachen fallen sofort auf:
  • Den Alphawert kannst du genau wie R, G und B auf alle Werte zwischen 0 (komplett transparent) und 255 (opak) setzen. Du setzt ihn auf 1, das heißt sofern du den Alphakanal für Blending nutzt, wird die Textur fast unsichtbar.
  • Du hast nicht gepostet, wie dein Rendercode aussieht. Die Textur zu binden führt allein noch nicht dazu, dass du sie auf dem Bildschirm siehst. Du musst mit gebundener Textur Dreiecke rendern und dabei für jeden Vertex Texturkoordinaten angeben.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen zur Laufzeit erstellen
BeitragVerfasst: Di Okt 11, 2016 12:53 
Offline
DGL Member

Registriert: Mo Feb 27, 2012 14:34
Beiträge: 25
Programmiersprache: Pascal
Blending habe ich nicht benutzt. Ich hätte vielleicht noch dazu schreiben sollen, dass es beim normalen Rendern mit geladener Textur (Bitmap) keine Probleme gibt, das bekomme ich eigentlich hin. Ich denke, es wird irgendwie an der Art und Weise der Texturerstellung liegen, ich habe noch nicht soviel mit Pointern, Speicherfreigabe und Referenzierung gearbeitet, deshalb habe ich den Code gepostet, wo ich auch den Fehler vermute, oder sieht der erst einmal so aus, als müsse es funktionieren?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen zur Laufzeit erstellen
BeitragVerfasst: Di Okt 11, 2016 16:05 
Offline
DGL Member

Registriert: Mo Feb 27, 2012 14:34
Beiträge: 25
Programmiersprache: Pascal
Ich habe ein kleines Beispielprojekt in Lazarus erstellt, um mein Problem besser zu erläutern.


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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen zur Laufzeit erstellen
BeitragVerfasst: Di Okt 11, 2016 19:03 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Hast du so was gemeint ?

Oder willst du, das dies auch mit der 1D-Textur funktioniert ?


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

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen zur Laufzeit erstellen
BeitragVerfasst: Di Okt 11, 2016 19:40 
Offline
DGL Member

Registriert: Mo Feb 27, 2012 14:34
Beiträge: 25
Programmiersprache: Pascal
Ich möchte gerne die Textur aus Farbwerten eines Arrays erstellen und nicht über den Umweg eines Bitmaps. Das Rechteck zeigt ja leider nicht die 1D Textur an, warum auch immer.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen zur Laufzeit erstellen
BeitragVerfasst: Di Okt 11, 2016 20:03 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1276
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Hast du so was gemeint, ich habe bei der 1D-Textur eine Array genommen ?
Die Pointer kannst du sparen. Wen die Textur unterschiedlich gross ist, kannst du auch ein dynamisches Array nehmen.


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

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen zur Laufzeit erstellen
BeitragVerfasst: Di Okt 11, 2016 20:46 
Offline
DGL Member

Registriert: Mo Feb 27, 2012 14:34
Beiträge: 25
Programmiersprache: Pascal
Vielen Dank mathias, genau das war es, was ich gesucht habe.


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 8 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.088s | 17 Queries | GZIP : On ]