34 #ifndef __diguyGraphicsShaderProgram_H
35 #define __diguyGraphicsShaderProgram_H
41 #define CPLUSPLUS_ONLY
51 class bdiShaderProgram;
142 const char* get_name();
149 const char* get_vertex_shader_filename();
156 const char* get_pixel_shader_filename();
202 void derive_diguy_shader_source_filename(
char* result,
204 const char* shader_base_name,
205 const char* shader_language,
206 const char* shader_type,
207 int include_diguy_default_shader_directory);
214 void print_shader_info_to_log();
239 int set_textures_used_bitmask(
int texture_bitmask);
248 int get_textures_used_bitmask();
263 #ifdef CPLUSPLUS_ONLY
303 virtual int load_vertex_shader_source(
const char* filename_base);
311 virtual int load_pixel_shader_source(
const char* filename_base);
340 virtual int reload();
385 virtual int get_loaded();
398 virtual int get_linked();
411 virtual int get_valid();
472 virtual int unbind();
502 virtual int bind_link_matrices(
int num_matrices,
503 const float* mat_data);
519 virtual int bind_color_array(
int num_colors,
520 const float* color_data);
547 virtual int bind_uniform_with_location(
int location,
552 virtual int bind_uniform_with_location(
int location,
566 virtual int get_attrib_bind_location(
const char* name);
577 virtual int get_uniform_bind_location(
const char* name);
591 int get_num_additional_feature_names();
594 const char * get_additional_feature_name(
int index);
597 int has_additional_feature(
const char * name);
611 static int get_transposed_matrix_data();
619 static int get_use_4x3_shader_matrix_data();
638 int get_num_variables();
639 const char* get_variable_name_at_index(
int index);
640 int has_variable(
const char* name);
641 const char* get_variable_type(
const char* name);
643 int set_variable_float(
const char* name,
float value,
int set_current = 1,
int set_initial = 0);
644 int set_variable_vec2(
const char* name,
float x,
float y,
int set_current = 1,
int set_initial = 0);
645 int set_variable_vec3(
const char* name,
float x,
float y,
float z,
int set_current = 1,
int set_initial = 0);
646 int set_variable_vec4(
const char* name,
float x,
float y,
float z,
float w,
int set_current = 1,
int set_initial = 0);
647 int set_variable_int(
const char* name,
int value,
int set_current = 1,
int set_initial = 0);
649 int get_variable_float(
const char* name,
float* value,
int get_current = 1);
650 int get_variable_vec2(
const char* name,
float* x,
float* y,
int get_current = 1);
651 int get_variable_vec3(
const char* name,
float* x,
float* y,
float* z,
int get_current = 1);
652 int get_variable_vec4(
const char* name,
float* r,
float* g,
float* b,
float* a,
int get_current = 1);
653 int get_variable_int(
const char* name,
int* value,
int get_current = 1);
664 #ifdef CPLUSPLUS_ONLY
666 bdiShaderProgram* get_internal_data() {
return m_internal_data;}
687 bdiShaderProgram* m_internal_data;
689 friend class bdiShaderProgram;
690 friend class bdiGeometryFactory;