1 #ifndef __al_included_allegro5_shader_h 2 #define __al_included_allegro5_shader_h 3 4 #include "allegro5/base.h" 5 #include "allegro5/transformations.h" 6 7 #ifdef __cplusplus 8 extern "C" { 9 #endif 10 11 12 /* Type: ALLEGRO_SHADER 13 */ 14 typedef struct ALLEGRO_SHADER ALLEGRO_SHADER; 15 16 enum ALLEGRO_SHADER_TYPE { 17 ALLEGRO_VERTEX_SHADER = 1, 18 ALLEGRO_PIXEL_SHADER = 2 19 }; 20 21 /* Enum: ALLEGRO_SHADER_TYPE 22 */ 23 typedef enum ALLEGRO_SHADER_TYPE ALLEGRO_SHADER_TYPE; 24 25 enum ALLEGRO_SHADER_PLATFORM { 26 ALLEGRO_SHADER_AUTO = 0, 27 ALLEGRO_SHADER_GLSL = 1, 28 ALLEGRO_SHADER_HLSL = 2 29 }; 30 31 /* Enum: ALLEGRO_SHADER_PLATFORM 32 */ 33 typedef enum ALLEGRO_SHADER_PLATFORM ALLEGRO_SHADER_PLATFORM; 34 35 /* Shader variable names */ 36 #define ALLEGRO_SHADER_VAR_COLOR "al_color" 37 #define ALLEGRO_SHADER_VAR_POS "al_pos" 38 #define ALLEGRO_SHADER_VAR_PROJVIEW_MATRIX "al_projview_matrix" 39 #define ALLEGRO_SHADER_VAR_TEX "al_tex" 40 #define ALLEGRO_SHADER_VAR_TEXCOORD "al_texcoord" 41 #define ALLEGRO_SHADER_VAR_TEX_MATRIX "al_tex_matrix" 42 #define ALLEGRO_SHADER_VAR_USER_ATTR "al_user_attr_" 43 #define ALLEGRO_SHADER_VAR_USE_TEX "al_use_tex" 44 #define ALLEGRO_SHADER_VAR_USE_TEX_MATRIX "al_use_tex_matrix" 45 #define ALLEGRO_SHADER_VAR_ALPHA_TEST "al_alpha_test" 46 #define ALLEGRO_SHADER_VAR_ALPHA_FUNCTION "al_alpha_func" 47 #define ALLEGRO_SHADER_VAR_ALPHA_TEST_VALUE "al_alpha_test_val" 48 49 AL_FUNC(ALLEGRO_SHADER *, al_create_shader, (ALLEGRO_SHADER_PLATFORM platform)); 50 AL_FUNC(bool, al_attach_shader_source, (ALLEGRO_SHADER *shader, 51 ALLEGRO_SHADER_TYPE type, const char *source)); 52 AL_FUNC(bool, al_attach_shader_source_file, (ALLEGRO_SHADER *shader, 53 ALLEGRO_SHADER_TYPE type, const char *filename)); 54 AL_FUNC(bool, al_build_shader, (ALLEGRO_SHADER *shader)); 55 AL_FUNC(const char *, al_get_shader_log, (ALLEGRO_SHADER *shader)); 56 AL_FUNC(ALLEGRO_SHADER_PLATFORM, al_get_shader_platform, (ALLEGRO_SHADER *shader)); 57 AL_FUNC(bool, al_use_shader, (ALLEGRO_SHADER *shader)); 58 AL_FUNC(void, al_destroy_shader, (ALLEGRO_SHADER *shader)); 59 60 AL_FUNC(bool, al_set_shader_sampler, (const char *name, ALLEGRO_BITMAP *bitmap, 61 int unit)); 62 AL_FUNC(bool, al_set_shader_matrix, (const char *name, 63 const ALLEGRO_TRANSFORM *matrix)); 64 AL_FUNC(bool, al_set_shader_int, (const char *name, int i)); 65 AL_FUNC(bool, al_set_shader_float, (const char *name, float f)); 66 AL_FUNC(bool, al_set_shader_int_vector, (const char *name, int num_components, 67 const int *i, int num_elems)); 68 AL_FUNC(bool, al_set_shader_float_vector, (const char *name, int num_components, 69 const float *f, int num_elems)); 70 AL_FUNC(bool, al_set_shader_bool, (const char *name, bool b)); 71 72 AL_FUNC(char const *, al_get_default_shader_source, (ALLEGRO_SHADER_PLATFORM platform, 73 ALLEGRO_SHADER_TYPE type)); 74 75 #ifdef __cplusplus 76 } 77 #endif 78 79 #endif 80 81 /* vim: set sts=3 sw=3 et: */ 82