|
- #include <stdio.h>
- #include "../../libShaderFile.h"
-
- #if _WIN64
- # define LIB_NAME "..\..\..\libShaderFile-x86_64-win64.dll"
- #elif _WIN32
- # define LIB_NAME "..\..\..\libShaderFile-i386-win32.dll"
- #elif __linux__ && (__amd64 || __x86_64 || _M_AMD64 || __ppc64__)
- # define LIB_NAME "../../../libShaderFile-x86_64-linux.so"
- #elif __linux__ && (__i386 || _X86_)
- # define LIB_NAME "../../../libShaderFile-i386-linux.so"
- #else
- # error 'unknown operation system'
- #endif
-
- int main(int argc, char **argv)
- {
- lsf_shader_file_handle_t sfHandle = 0;
- lsf_shader_generator_handle_t sgHandle = 0;
- lsf_error_code_t err = LSF_ERR_NONE;
- int ret = 0, i = 3;
- const char* code = NULL;
-
- if (argc < 3)
- {
- printf("error: expected input file and generator/class name as parameter\n");
- return 1;
- }
-
- lsf_init(LIB_NAME);
-
- // create shader file
- sfHandle = lsf_shader_file_create();
- if (!sfHandle)
- {
- printf("unable to create shader file: %s\n", lsf_get_last_error_msg());
- ret = 2;
- goto cleanup_lib;
- }
-
- // load shader file
- err = lsf_shader_file_load_from_file(sfHandle, argv[1]);
- if (err != LSF_ERR_NONE)
- {
- printf("unable to load shader file: %s\n", lsf_get_last_error_msg());
- ret = 3;
- goto cleanup_shader_file;
- }
-
- // create generator
- sgHandle = lsf_generator_create(sfHandle, argv[2]);
- if (!sgHandle)
- {
- printf("unable to create generator: %s\n", lsf_get_last_error_msg());
- ret = 4;
- goto cleanup_shader_file;
- }
-
- // apply properties
- while (i < argc-1)
- {
- err = lsf_generator_set_property_by_name(sgHandle, argv[i], argv[i+1]);
- if (err != LSF_ERR_NONE)
- {
- printf("unable to set property (%s=%s) (err=0x%08x)", argv[i], argv[i+1], err);
- ret = 5;
- goto cleanup_shader_generator;
- }
- i += 2;
- }
-
- // generate code
- code = lsf_generator_generate_code(sgHandle);
- if (!code)
- {
- printf("unable to generate code: %s\n", lsf_get_last_error_msg());
- ret = 4;
- goto cleanup_shader_generator;
- }
-
- printf("%s", code);
-
- cleanup_shader_generator:
- err = lsf_generator_destroy(sgHandle);
- if (err != LSF_ERR_NONE)
- printf("warning: could not destroy generator handle: %d\n", err);
-
- cleanup_shader_file:
- err = lsf_shader_file_destroy(sfHandle);
- if (err != LSF_ERR_NONE)
- printf("warning: could not destroy shader file handle: %d\n", err);
-
- cleanup_lib:
- err = lsf_finish();
- if (err != LSF_ERR_NONE)
- printf("warning: could finish library: %d\n", err);
-
- return ret;
- }
|