DGL
https://delphigl.com/forum/

Probleme mit Kompilierung von Fragmentshader in CG
https://delphigl.com/forum/viewtopic.php?f=20&t=8976
Seite 1 von 1

Autor:  heavenssake007 [ Do Jan 28, 2010 21:51 ]
Betreff des Beitrags:  Probleme mit Kompilierung von Fragmentshader in CG

Hallo alle zusammen,

Obwohl ich auch noch recht neu in der Grafikprogrammierung bin habe ich es mal gewagt mit Shadern zu hantieren. Nachdem ich schon mit GLSL die Shader aus der Shadersammlung zum laufen bekommen hatte. Von eigener Programmierung kann da noch nicht die Rede sein, wollte ich mich mal mit Hilfe des Tutorials an CG versuchen. Ich weiss, jetzt kommt vielleicht die Frage, warum ich denn nicht bei GLSL bleibe. Ganz einfach deswegen weil ich hier ein Buch mit wunderbaren Beispielen vor mir habe (Volume Rendering), jedoch alle mit CG geschrieben sind. Nun habe ich mal alles implementiert was in dem Tutorial steht. Beim Vertexshader bekomme ich keinen Fehler ausgegeben, jedoch sehe ich auch nichts auf meinem Bildschirm. Liegt womöglich an der Reihenfolge wann ich diesen verwende. Beim Fragmentshader bekomme ich, egal wie einfach das Programm geschrieben ist jedesmal einen Compilerfehler.

Hat jemand vielleicht ein Programm in delphi geschrieben, welches lesbar ist, sich an dem Tutorial orientiert und läuft. Sprich Fragmentshader und VertexShader? Das er mir und der Community zur Verfügung stellen könnte? Joachim Rohde hat ja auf seiner Seite auch immer eine Delphi Übersetzung. Nur steige ich bei Lektion 47 der CG-Vertex Shader nicht ganz durch den SourceCode, bzw. erkenne nicht was ich falsch gemacht habe.

Hier ist meine Load Routine

Code:
  1.  
  2. procedure TForm1.LoadShader(ASourceType,AShaderType:integer;Filename:string);
  3. var srctype  : TCGenum;
  4. begin
  5.  
  6.     //Quelltyp auswählen
  7.     case ASourceType of
  8.       assSource   : srctype := CG_SOURCE;
  9.       assCompiled : srctype := CG_OBJECT;
  10.     end;
  11.  
  12.     case AShaderType of
  13.       astVertex   : FProfile := cgGLGetLatestProfile(CG_GL_VERTEX);
  14.       astFragment : FProfile := cgGLGetLatestProfile(CG_GL_FRAGMENT);
  15.     end;
  16.  
  17.     //Profile setzen
  18.     cgGLSetOptimalOptions(FProfile);
  19.  
  20.     FProgram := cgCreateProgramfromFile(FContext, srctype, 'cgFragmentExample.cg',
  21.                 FProfile,nil, nil);
  22.  
  23.     CheckCgError;
  24.  
  25.     cgGLLoadProgram(FProgram);
  26.  
  27.     cgGLEnableProfile(FProfile);
  28.     cgGLBindProgram(FProgram);
  29.  
  30.     CheckCgError;
  31.  
  32.     //cgGLDisableProfile(aProfile);
  33.     //cgGLUnbindProgram(aProfile); 
  34. end;
  35.  


Der Shader sieht so aus:

Code:
  1. float4 main ( half4 primary : COLOR,
  2.                   half2 uv       : TEXCOORD0,
  3.                   uniform sampler2D texture): COLOR
  4. {
  5.      float4 texel = tex2D(texture,uv);
  6.      return texel * primary;
  7. }




heavenssake007


Edit: läuft jetzt alles!!! :)

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/