Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

87 linhas
2.4 KiB

  1. #include <stdio.h>
  2. #include "../../libShaderFile.h"
  3. int main(int argc, char **argv)
  4. {
  5. lsf_shader_file_handle_t sfHandle = 0;
  6. lsf_shader_generator_handle_t sgHandle = 0;
  7. lsf_error_code_t err = LSF_ERR_NONE;
  8. int ret = 0, i = 3;
  9. const char* code = NULL;
  10. if (argc < 3)
  11. {
  12. printf("error: expected input file and generator/class name as parameter\n");
  13. return 1;
  14. }
  15. lsf_init("../../../libShaderFile-i386-win32.dll");
  16. // create shader file
  17. sfHandle = lsf_shader_file_create();
  18. if (!sfHandle)
  19. {
  20. printf("unable to create shader file: %s\n", lsf_get_last_error_msg());
  21. ret = 2;
  22. goto cleanup_lib;
  23. }
  24. // load shader file
  25. err = lsf_shader_file_load_from_file(sfHandle, argv[1]);
  26. if (err != LSF_ERR_NONE)
  27. {
  28. printf("unable to load shader file: %s\n", lsf_get_last_error_msg());
  29. ret = 3;
  30. goto cleanup_shader_file;
  31. }
  32. // create generator
  33. sgHandle = lsf_generator_create(sfHandle, argv[2]);
  34. if (!sgHandle)
  35. {
  36. printf("unable to create generator: %s\n", lsf_get_last_error_msg());
  37. ret = 4;
  38. goto cleanup_shader_file;
  39. }
  40. // apply properties
  41. while (i < argc-1)
  42. {
  43. err = lsf_generator_set_property_by_name(sgHandle, argv[i], argv[i+1]);
  44. if (err != LSF_ERR_NONE)
  45. {
  46. printf("unable to set property (%s=%s) (err=0x%08x)", argv[i], argv[i+1], err);
  47. ret = 5;
  48. goto cleanup_shader_generator;
  49. }
  50. i += 2;
  51. }
  52. // generate code
  53. code = lsf_generator_generate_code(sgHandle);
  54. if (!code)
  55. {
  56. printf("unable to generate code: %s\n", lsf_get_last_error_msg());
  57. ret = 4;
  58. goto cleanup_shader_generator;
  59. }
  60. printf("%s", code);
  61. cleanup_shader_generator:
  62. err = lsf_generator_destroy(sgHandle);
  63. if (err != LSF_ERR_NONE)
  64. printf("warning: could not destroy generator handle: %d\n", err);
  65. cleanup_shader_file:
  66. err = lsf_shader_file_destroy(sfHandle);
  67. if (err != LSF_ERR_NONE)
  68. printf("warning: could not destroy shader file handle: %d\n", err);
  69. cleanup_lib:
  70. err = lsf_finish();
  71. if (err != LSF_ERR_NONE)
  72. printf("warning: could finish library: %d\n", err);
  73. return ret;
  74. }