*Release v0.6.19.128*
Heyho,
ich hab mal wieder bisl was gecodet.
4. Release v0.6.19.128
- Bug-Fixes
- Kompilieren und Speichern von Shadern
- eine Unit zum verwalten von Shader-Programmen
- Log-Fenster mit Fehlerausgabe beim Kompilieren
Mit diesen Änderungen kann man den ShaderEditor schon wunderbar für seine Projekte nutzen. Die Fehlersuche sollte jetzt auch schneller gehen, weil man die Shader jetzt mit dem Editor kompilieren kann. Außerdem gibt es eine Unit, die man in seine Projekte einbinden kann. Mit dieser Unit kann man die Shader, die man mit dem glslEditor erstellt hat, verwalten (laden, speichern, ...). Im Grunde sind das die selben Funktionen, die OpenGl bietet, nur das sie hier mit dem Shader in ein Objekt gekapselt werden. Hier mal ein kleines Bsp wie das ganze ausehen kann:
Code: var Log: TListBox; Shader: TglShaderProgram; procedure ShaderLogEvent(Sender: TObject; const Msg: String); begin Log.Items.Add(TimeToStr(now)+': '+msg); end; procedure CreateShader; var Obj: TglShaderObject; begin try Shader := TglShaderProgram.Create(ShaderLogEvent); Obj := TglShaderObject.Create(GL_VERTEX_SHADER, ShaderLogEvent); Obj.Code := VertexShaderCode; Shader.Add(Obj); Obj := TglShaderObject.Create(GL_FRAGMENT_SHADER, ShaderLogEvent); Obj.Code := FragmentShaderCode; Shader.Add(Obj); Shader.Compile; except on e: Exception do MessageDlg(e.Message, mtError, [mbOK], 0); end; end; procedure Render; begin Shader.Activate; Shader.Uniform4f('color', 1, 1, 1, 0); {renden...} Shader.Deactivate; end; procedure FreeShader; begin Shader.Clear; Shader.Free; end;
Mit der Klasse kann Shader auch ganz einfach mit LoadFromFile oder LoadFromStream aus Datein oder Streams laden, so wie man es auch von anderen Klassen kennt. Beim Compilieren im Editor wird im Projektordner eine Shader.glsl Datei angelegt, die man dann mit der Klasse über LoadFromFile laden kann. Soweit erstmal zu den neuen Features. Als nächstes werd ich mir denke ich die Parameteranzeige der Funktionen vor nehmen. Wenns was neues gibt erfahrt ihr es als erste
MfG Bergmann
|