Esempio n. 1
0
static bool gl_glsl_set_mvp(void *data, void *shader_data, const math_matrix_4x4 *mat)
{
   int loc;
   glsl_shader_data_t *glsl = (glsl_shader_data_t*)shader_data;

   (void)data;

   if (!glsl || !glsl->shader->modern)
   {
      gl_ff_matrix(mat);
      return false;
   }

   loc = glsl->uniforms[glsl->active_idx].mvp;
   if (loc >= 0)
   {
      if (  (current_idx != glsl->active_idx) || 
            (mat->data != current_mat_data_pointer[glsl->active_idx]) || 
            (*mat->data != current_mat_data[glsl->active_idx]))
      {
         glUniformMatrix4fv(loc, 1, GL_FALSE, mat->data);
         current_idx                                = glsl->active_idx;
         current_mat_data_pointer[glsl->active_idx] = (float*)mat->data;
         current_mat_data[glsl->active_idx]         = *mat->data;
      }
   }

   return true;
}
Esempio n. 2
0
static bool shader_null_set_mvp(void *data, void *shader_data, const math_matrix_4x4 *mat)
{
#ifdef HAVE_OPENGL
#ifndef NO_GL_FF_MATRIX
   if (string_is_equal(video_driver_get_ident(), "gl"))
      gl_ff_matrix(mat);
#endif
#endif
   return false;
}
Esempio n. 3
0
static bool gl_cg_set_mvp(void *data, void *shader_data, const math_matrix_4x4 *mat)
{
   cg_shader_data_t *cg_data = (cg_shader_data_t*)shader_data;
   if (cg_data && cg_data->prg[cg_data->active_idx].mvp)
   {
      cgGLSetMatrixParameterfc(cg_data->prg[cg_data->active_idx].mvp, mat->data);
      return true;
   }

   gl_ff_matrix(mat);
   return false;
}
Esempio n. 4
0
static bool shader_null_set_mvp(void *data, const math_matrix_4x4 *mat)
{
#ifdef HAVE_OPENGL
#ifndef NO_GL_FF_MATRIX
   gl_t *gl = (gl_t*)video_driver_get_ptr(NULL);
   if (gl)
   {
      gl_ff_matrix(mat);
   }
#endif
#endif
   return false;
}
Esempio n. 5
0
static bool gl_cg_set_mvp(void *data, void *shader_data, const math_matrix_4x4 *mat)
{
   cg_shader_data_t *cg = (cg_shader_data_t*)shader_data;
   if (!cg || !cg->prg[cg->active_idx].mvp)
      goto fallback;

   cgGLSetMatrixParameterfc(cg->prg[cg->active_idx].mvp, mat->data);
   return true;

fallback:
   gl_ff_matrix(mat);
   return false;
}
Esempio n. 6
0
static bool gl_cg_set_mvp(void *data, const math_matrix_4x4 *mat)
{
   driver_t *driver = driver_get_ptr();
   cg_shader_data_t *cg = (cg_shader_data_t*)driver->video_shader_data;

   (void)data;

   if (cg && cg->prg[cg->active_idx].mvp)
   {
      cgGLSetMatrixParameterfc(cg->prg[cg->active_idx].mvp, mat->data);
      return true;
   }

   gl_ff_matrix(mat);
   return false;
}
Esempio n. 7
0
static bool gl_cg_set_mvp(void *data, const math_matrix_4x4 *mat)
{
   cg_shader_data_t *cg = (cg_shader_data_t*)driver.video_shader_data;

   (void)data;

   if (cg && cg->prg[cg->active_idx].mvp)
   {
      cgGLSetMatrixParameterfc(cg->prg[cg->active_idx].mvp, mat->data);
      return true;
   }

#ifndef NO_GL_FF_MATRIX
   gl_ff_matrix(mat);
#endif
   return false;
}
Esempio n. 8
0
static bool gl_glsl_set_mvp(void *data, void *shader_data, const math_matrix_4x4 *mat)
{
   int loc;
   glsl_shader_data_t *glsl = (glsl_shader_data_t*)shader_data;

   (void)data;

   if (!glsl || !glsl->shader->modern)
   {
      gl_ff_matrix(mat);
      return false;
   }

   loc = glsl->gl_uniforms[glsl->glsl_active_index].mvp;
   if (loc >= 0)
      glUniformMatrix4fv(loc, 1, GL_FALSE, mat->data);

   return true;
}