34 #ifndef __diguyGraphicsShaderInstance_H
35 #define __diguyGraphicsShaderInstance_H
40 #define CPLUSPLUS_ONLY
51 class bdiShaderProgramInstance;
107 #ifdef CPLUSPLUS_ONLY
127 const float* get_shader_matrix_data_ptr();
160 #ifdef CPLUSPLUS_ONLY
220 virtual int unbind();
239 int get_num_variables();
240 const char* get_variable_name_at_index(
int index);
241 int has_variable(
const char* name);
242 const char* get_variable_type(
const char* name);
244 void reset_variables_to_initial_values();
245 void reset_variables_to_program_defaults();
247 int set_variable_float(
const char* name,
float value,
int set_current = 1,
int set_initial = 0,
float blend_time = 0.0f);
248 int set_variable_vec2(
const char* name,
float x,
float y,
int set_current = 1,
int set_initial = 0,
float blend_time = 0.0f);
249 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);
250 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);
251 int set_variable_int(
const char* name,
int value,
int set_current = 1,
int set_initial = 0);
253 int get_variable_float(
const char* name,
float* value,
int get_current = 1);
254 int get_variable_vec2(
const char* name,
float* x,
float* y,
int get_current = 1);
255 int get_variable_vec3(
const char* name,
float* x,
float* y,
float* z,
int get_current = 1);
256 int get_variable_vec4(
const char* name,
float* r,
float* g,
float* b,
float* a,
int get_current = 1);
257 int get_variable_int(
const char* name,
int* value,
int get_current = 1);
315 int get_num_link_matrices();
346 virtual int update_link_matrices(
int num_matrices,
347 const float* mat_data);
353 #ifdef CPLUSPLUS_ONLY
354 bdiShaderProgramInstance* get_internal_data() {
return m_internal_data;}
375 bdiShaderProgramInstance* m_internal_data;
377 friend class bdiShaderProgramInstance;
378 friend class bdiGeometryFactory;