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

Aktuelle Zeit: Fr Nov 08, 2024 11:59

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



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Shader zusammensetzen
BeitragVerfasst: So Okt 01, 2023 14:51 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ich habe folgendes compiliert und das Shader erstellen geht ohne Probleme, es kommt nicht mal eine Warnung.
Obwohl ich 2 Vertex-Shader angegeben habe.
vertexshader.glsl
Code:
  1. #version 450 core
  2. layout (location = 0) in vec4 vPosition;
  3. void main() {
  4. //  mainXXX();
  5.   gl_Position = vPosition;}  


test.glsl
Code:
  1. #version 450 core
  2. layout (location = 0) in vec4 vPosition;
  3. void mainXXX() {
  4.   gl_Position = vPosition; }    


Lazarus:
Code:
  1.     MyShader := TShader.Create([
  2.       GL_VERTEX_SHADER, FileToStr('Vertexshader.glsl'),
  3.       GL_VERTEX_SHADER, FileToStr('test.glsl'),
  4.       GL_FRAGMENT_SHADER, FileToStr('Fragmentshader.glsl')]);

Dies funktioniert aber nur solange, wen im 2. Shader nicht main() steht.


Da bin ich auf folgende Idee gekommen:
Code:
  1. #version 450 core
  2. void main() {
  3.   mainXXX(); }  

Code:
  1. #version 450 core
  2. layout (location = 0) in vec4 vPosition;
  3. void mainXXX() {
  4.   gl_Position = vPosition;}

Das wird aber mit dem Fehler quittiert, das er meinXXX() nicht findet.

Nun zur Frage, ist sowas überhaupt möglich ?
Wen nein, wieso wird dann überhaupt die Source mit mainXXX() compiliert ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Shader zusammensetzen
BeitragVerfasst: Di Nov 05, 2024 06:50 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3829
Wohnort: Tespe (nahe Hamburg)
Nun, wenn Du zwei einesetzt, wird er den ersten vermutlich mit dem zweiten Überschreiben und entsprechend die Funktionen aus dem ersten nicht mehr kennen. Ich habe mir damals damit beholfen eine Art eigenes Include dafür zu schreiben. Also z.B. ein "#include myfile" eingebaut. Als der Shader-Source gelesen wurde, habe ich nach dem Pattern gesucht, das weitere File angelesen und an der Stelle im Code eingefügt bevor es zum Kompilieren an den Treiber gegangen ist. Dadurch konnte man Methoden und Funktionen über mehrere Shader hinweg anwenden.

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


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


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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.012s | 17 Queries | GZIP : On ]