14 #ifndef __diguyGraphicsShaderInstance_H
15 #define __diguyGraphicsShaderInstance_H
20 #define CPLUSPLUS_ONLY
31 class bdiShaderProgramInstance;
107 const float* get_shader_matrix_data_ptr();
140 #ifdef CPLUSPLUS_ONLY
200 virtual int unbind();
219 int get_num_variables();
220 const char* get_variable_name_at_index(
int index);
221 int has_variable(
const char* name);
222 const char* get_variable_type(
const char* name);
224 void reset_variables_to_initial_values();
225 void reset_variables_to_program_defaults();
227 int set_variable_float(
const char* name,
float value,
int set_current = 1,
int set_initial = 0,
float blend_time = 0.0f);
228 int set_variable_vec2(
const char* name,
float x,
float y,
int set_current = 1,
int set_initial = 0,
float blend_time = 0.0f);
229 int set_variable_vec3(
const char* name,
float x,
float y,
float z,
int set_current = 1,
int set_initial = 0,
float blend_time = 0.0f);
230 int set_variable_vec4(
const char* name,
float x,
float y,
float z,
float w,
int set_current = 1,
int set_initial = 0,
float blend_time = 0.0f);
231 int set_variable_int(
const char* name,
int value,
int set_current = 1,
int set_initial = 0);
233 int get_variable_float(
const char* name,
float* value,
int get_current = 1);
234 int get_variable_vec2(
const char* name,
float* x,
float* y,
int get_current = 1);
235 int get_variable_vec3(
const char* name,
float* x,
float* y,
float* z,
int get_current = 1);
236 int get_variable_vec4(
const char* name,
float* r,
float* g,
float* b,
float* a,
int get_current = 1);
237 int get_variable_int(
const char* name,
int* value,
int get_current = 1);
295 int get_num_link_matrices();
326 virtual int update_link_matrices(
int num_matrices,
327 const float* mat_data);
333 #ifdef CPLUSPLUS_ONLY
334 bdiShaderProgramInstance* get_internal_data() {
return m_internal_data;}
355 bdiShaderProgramInstance* m_internal_data;
357 friend class bdiShaderProgramInstance;
358 friend class bdiGeometryFactory;