Пример #1
0
static void menu_display_gl_draw_pipeline(void *data)
{
#ifdef HAVE_SHADERPIPELINE
   menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data;
   video_coord_array_t *ca       = menu_display_get_coords_array();

   draw->x           = 0;
   draw->y           = 0;
   draw->coords      = (struct video_coords*)(&ca->coords);
   draw->matrix_data = NULL;

   switch (draw->pipeline.id)
   {
      case VIDEO_SHADER_MENU:
      case VIDEO_SHADER_MENU_2:
      case VIDEO_SHADER_MENU_3:
      case VIDEO_SHADER_MENU_4:
         {
            static float t                    = 0;
            video_shader_ctx_info_t shader_info;
            struct uniform_info uniform_param;

            shader_info.data       = NULL;
            shader_info.idx        = draw->pipeline.id;
            shader_info.set_active = true;

            video_shader_driver_use(shader_info);

            t += 0.01;

            uniform_param.type              = UNIFORM_1F;
            uniform_param.enabled           = true;
            uniform_param.location          = 0;
            uniform_param.count             = 0;

            uniform_param.lookup.type       = SHADER_PROGRAM_VERTEX;
            uniform_param.lookup.ident      = "time";
            uniform_param.lookup.idx        = draw->pipeline.id;
            uniform_param.lookup.add_prefix = true;
            uniform_param.lookup.enable     = true;

            uniform_param.result.f.v0       = t;

            video_shader_driver_set_parameter(uniform_param);            

            uniform_param.type              = UNIFORM_2F;
            uniform_param.lookup.ident      = "OutputSize";
            uniform_param.result.f.v0       = draw->width;
            uniform_param.result.f.v1       = draw->height;

            video_shader_driver_set_parameter(uniform_param);
         }
         break;
   }
#endif
}
Пример #2
0
static void menu_display_d3d_draw_pipeline(void *data)
{
#if defined(HAVE_HLSL) || defined(HAVE_CG)
   video_shader_ctx_info_t shader_info;
   menu_display_ctx_draw_t *draw     = (menu_display_ctx_draw_t*)data;
   struct uniform_info uniform_param = {0};
   static float t                    = 0;
   video_coord_array_t *ca             = NULL;

   ca = menu_display_get_coords_array();

   draw->x           = 0;
   draw->y           = 0;
   draw->coords      = (struct video_coords*)(&ca->coords);
   draw->matrix_data = NULL;

   switch (draw->pipeline.id)
   {
      case VIDEO_SHADER_MENU:
      case VIDEO_SHADER_MENU_2:
      case VIDEO_SHADER_MENU_3:
         shader_info.data                = NULL;
         shader_info.idx                 = draw->pipeline.id;
         shader_info.set_active          = true;

         video_shader_driver_use(shader_info);

         t += 0.01;

         uniform_param.enabled           = true;
         uniform_param.lookup.enable     = true;
         uniform_param.lookup.add_prefix = true;
         uniform_param.lookup.idx        = draw->pipeline.id;
         uniform_param.lookup.type       = SHADER_PROGRAM_VERTEX;
         uniform_param.type              = UNIFORM_1F;
         uniform_param.lookup.ident      = "time";
         uniform_param.result.f.v0       = t;

         video_shader_driver_set_parameter(uniform_param);
         break;
   }
#endif
}