#include #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; }