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

Aktuelle Zeit: Di Mai 14, 2024 02:48

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



Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
BeitragVerfasst: Do Jan 28, 2010 21:51 
Offline
DGL Member

Registriert: Fr Jan 16, 2009 13:36
Beiträge: 75
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!!! :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
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.007s | 14 Queries | GZIP : On ]