14 #ifndef __diguyGraphicsShaderProgram_H
15 #define __diguyGraphicsShaderProgram_H
21 #define CPLUSPLUS_ONLY
31 class bdiShaderProgram;
122 const char* get_name();
129 const char* get_vertex_shader_filename();
136 const char* get_pixel_shader_filename();
150 const char* get_shader_version();
189 void derive_diguy_shader_source_filename(
char* result,
191 const char* shader_base_name,
192 const char* shader_language,
193 const char* shader_type,
194 int include_diguy_default_shader_directory);
201 void print_shader_info_to_log();
226 int set_textures_used_bitmask(
int texture_bitmask);
235 int get_textures_used_bitmask();
250 #ifdef CPLUSPLUS_ONLY
290 virtual int load_vertex_shader_source(
const char* filename_base);
298 virtual int load_pixel_shader_source(
const char* filename_base);
327 virtual int reload();
372 virtual int get_loaded();
385 virtual int get_linked();
398 virtual int get_valid();
459 virtual int unbind();
489 virtual int bind_link_matrices(
int num_matrices,
490 const float* mat_data);
506 virtual int bind_color_array(
int num_colors,
507 const float* color_data);
534 virtual int bind_uniform_with_location(
int location,
539 virtual int bind_uniform_with_location(
int location,
554 virtual int get_attrib_bind_location(
const char* name);
565 virtual int get_uniform_bind_location(
const char* name);
579 int get_num_additional_feature_names();
582 const char * get_additional_feature_name(
int index);
585 int has_additional_feature(
const char * name);
599 static int get_transposed_matrix_data();
607 static int get_use_4x3_shader_matrix_data();
626 int get_num_variables();
627 const char* get_variable_name_at_index(
int index);
628 int has_variable(
const char* name);
629 const char* get_variable_type(
const char* name);
631 int set_variable_float(
const char* name,
float value,
int set_current = 1,
int set_initial = 0);
632 int set_variable_vec2(
const char* name,
float x,
float y,
int set_current = 1,
int set_initial = 0);
633 int set_variable_vec3(
const char* name,
float x,
float y,
float z,
int set_current = 1,
int set_initial = 0);
634 int set_variable_vec4(
const char* name,
float x,
float y,
float z,
float w,
int set_current = 1,
int set_initial = 0);
635 int set_variable_int(
const char* name,
int value,
int set_current = 1,
int set_initial = 0);
637 int get_variable_float(
const char* name,
float* value,
int get_current = 1);
638 int get_variable_vec2(
const char* name,
float* x,
float* y,
int get_current = 1);
639 int get_variable_vec3(
const char* name,
float* x,
float* y,
float* z,
int get_current = 1);
640 int get_variable_vec4(
const char* name,
float* r,
float* g,
float* b,
float* a,
int get_current = 1);
641 int get_variable_int(
const char* name,
int* value,
int get_current = 1);
665 #ifdef CPLUSPLUS_ONLY
667 bdiShaderProgram* get_internal_data() {
return m_internal_data;}
688 bdiShaderProgram* m_internal_data;
690 friend class bdiShaderProgram;
691 friend class bdiGeometryFactory;