Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 
 

80 wiersze
1.9 KiB

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