Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

68 rindas
1.5 KiB

  1. program example;
  2. {$APPTYPE CONSOLE}
  3. uses
  4. SysUtils, Classes,
  5. ulibShaderFile;
  6. type
  7. TFileReader = class(TInterfacedObject, IlsfFileReader)
  8. public
  9. function LoadStream(const aFilename: String; const aStream: TStream): Boolean;
  10. end;
  11. var
  12. i: Integer;
  13. s: String;
  14. ShaderFile: TlsfShaderFile;
  15. Generator: TlsfGenerator;
  16. function TFileReader.LoadStream(const aFilename: String; const aStream: TStream): Boolean;
  17. var
  18. fs: TFileStream;
  19. begin
  20. fs := TFileStream.Create(aFilename, fmOpenRead);
  21. try
  22. aStream.CopyFrom(fs, fs.Size - fs.Position);
  23. result := true;
  24. finally
  25. FreeAndNil(fs);
  26. end;
  27. end;
  28. begin
  29. lsf_init(ExtractFilePath(ParamStr(0)) + '..\..\..\libShaderFile-i386-win32.dll');
  30. try
  31. if (ParamCount < 2) then begin
  32. WriteLn('error: expected input file and generator/class name as parameter');
  33. ExitCode := 1;
  34. exit;
  35. end;
  36. ShaderFile := TlsfShaderFile.Create;
  37. try
  38. ShaderFile.LoadFromFunc(ParamStr(1), TFileReader.Create);
  39. Generator := TlsfGenerator.Create(ShaderFile, Trim(ParamStr(2)));
  40. try
  41. i := 3;
  42. while (i < ParamCount) do begin
  43. s := ParamStr(i+1);
  44. Generator.SetProperty(ParamStr(i), s);
  45. inc(i, 2);
  46. end;
  47. WriteLn(Generator.GenerateCode);
  48. finally
  49. FreeAndNil(Generator);
  50. end;
  51. finally
  52. FreeAndNil(ShaderFile);
  53. end;
  54. except
  55. on e: Exception do begin
  56. WriteLn('error: ' + e.Message);
  57. ExitCode := 2;
  58. end;
  59. end;
  60. lsf_finish;
  61. end.