[renderer] Use designated inits on more structs

Finally, the model_funcs and render_funcs struts use designated
initializers. Not only are they good for ensuring correct
initialization, they're great for the programmer finding the right
initializer.
This commit is contained in:
Bill Currie 2022-09-25 10:18:06 +09:00
parent 5e154bf1b7
commit 9e440ff330
4 changed files with 276 additions and 268 deletions

View File

@ -153,30 +153,31 @@ gl_vid_render_create_context (void *data)
}
static vid_model_funcs_t model_funcs = {
sizeof (gltex_t),
gl_Mod_LoadLighting,
gl_Mod_SubdivideSurface,
gl_Mod_ProcessTexture,
.texture_render_size = sizeof (gltex_t),
Mod_LoadIQM,
Mod_LoadAliasModel,
Mod_LoadSpriteModel,
.Mod_LoadLighting = gl_Mod_LoadLighting,
.Mod_SubdivideSurface = gl_Mod_SubdivideSurface,
.Mod_ProcessTexture = gl_Mod_ProcessTexture,
gl_Mod_MakeAliasModelDisplayLists,
gl_Mod_LoadAllSkins,
gl_Mod_FinalizeAliasModel,
gl_Mod_LoadExternalSkins,
gl_Mod_IQMFinish,
1,
gl_Mod_SpriteLoadFrames,
.Mod_LoadIQM = Mod_LoadIQM,
.Mod_LoadAliasModel = Mod_LoadAliasModel,
.Mod_LoadSpriteModel = Mod_LoadSpriteModel,
Skin_Free,
Skin_SetColormap,
Skin_SetSkin,
gl_Skin_SetupSkin,
Skin_SetTranslation,
gl_Skin_ProcessTranslation,
gl_Skin_InitTranslations,
.Mod_MakeAliasModelDisplayLists = gl_Mod_MakeAliasModelDisplayLists,
.Mod_LoadAllSkins = gl_Mod_LoadAllSkins,
.Mod_FinalizeAliasModel = gl_Mod_FinalizeAliasModel,
.Mod_LoadExternalSkins = gl_Mod_LoadExternalSkins,
.Mod_IQMFinish = gl_Mod_IQMFinish,
.alias_cache = 1,
.Mod_SpriteLoadFrames = gl_Mod_SpriteLoadFrames,
.Skin_Free = Skin_Free,
.Skin_SetColormap = Skin_SetColormap,
.Skin_SetSkin = Skin_SetSkin,
.Skin_SetupSkin = gl_Skin_SetupSkin,
.Skin_SetTranslation = Skin_SetTranslation,
.Skin_ProcessTranslation = gl_Skin_ProcessTranslation,
.Skin_InitTranslations = gl_Skin_InitTranslations,
};
static void
@ -498,56 +499,57 @@ gl_capture_screen (capfunc_t callback, void *data)
}
vid_render_funcs_t gl_vid_render_funcs = {
gl_vid_render_init,
gl_Draw_CharBuffer,
gl_Draw_Character,
gl_Draw_String,
gl_Draw_nString,
gl_Draw_AltString,
gl_Draw_ConsoleBackground,
gl_Draw_Crosshair,
gl_Draw_CrosshairAt,
gl_Draw_TileClear,
gl_Draw_Fill,
gl_Draw_Line,
gl_Draw_TextBox,
gl_Draw_FadeScreen,
gl_Draw_BlendScreen,
gl_Draw_CachePic,
gl_Draw_UncachePic,
gl_Draw_MakePic,
gl_Draw_DestroyPic,
gl_Draw_PicFromWad,
gl_Draw_Pic,
gl_Draw_Picf,
gl_Draw_SubPic,
gl_Draw_AddFont,
gl_Draw_FontString,
.init = gl_vid_render_init,
gl_ParticleSystem,
gl_R_Init,
gl_R_ClearState,
gl_R_LoadSkys,
gl_R_NewScene,
gl_R_LineGraph,
gl_begin_frame,
gl_render_view,
gl_R_DrawParticles,
gl_draw_transparent,
gl_post_process,
gl_set_2d,
gl_end_frame,
.Draw_CharBuffer = gl_Draw_CharBuffer,
.Draw_Character = gl_Draw_Character,
.Draw_String = gl_Draw_String,
.Draw_nString = gl_Draw_nString,
.Draw_AltString = gl_Draw_AltString,
.Draw_ConsoleBackground = gl_Draw_ConsoleBackground,
.Draw_Crosshair = gl_Draw_Crosshair,
.Draw_CrosshairAt = gl_Draw_CrosshairAt,
.Draw_TileClear = gl_Draw_TileClear,
.Draw_Fill = gl_Draw_Fill,
.Draw_Line = gl_Draw_Line,
.Draw_TextBox = gl_Draw_TextBox,
.Draw_FadeScreen = gl_Draw_FadeScreen,
.Draw_BlendScreen = gl_Draw_BlendScreen,
.Draw_CachePic = gl_Draw_CachePic,
.Draw_UncachePic = gl_Draw_UncachePic,
.Draw_MakePic = gl_Draw_MakePic,
.Draw_DestroyPic = gl_Draw_DestroyPic,
.Draw_PicFromWad = gl_Draw_PicFromWad,
.Draw_Pic = gl_Draw_Pic,
.Draw_Picf = gl_Draw_Picf,
.Draw_SubPic = gl_Draw_SubPic,
.Draw_AddFont = gl_Draw_AddFont,
.Draw_FontString = gl_Draw_FontString,
gl_create_cube_map,
gl_create_frame_buffer,
gl_destroy_frame_buffer,
gl_bind_framebuffer,
gl_set_viewport,
gl_set_fov,
.ParticleSystem = gl_ParticleSystem,
.R_Init = gl_R_Init,
.R_ClearState = gl_R_ClearState,
.R_LoadSkys = gl_R_LoadSkys,
.R_NewScene = gl_R_NewScene,
.R_LineGraph = gl_R_LineGraph,
.begin_frame = gl_begin_frame,
.render_view = gl_render_view,
.draw_particles = gl_R_DrawParticles,
.draw_transparent = gl_draw_transparent,
.post_process = gl_post_process,
.set_2d = gl_set_2d,
.end_frame = gl_end_frame,
gl_capture_screen,
.create_cube_map = gl_create_cube_map,
.create_frame_buffer = gl_create_frame_buffer,
.destroy_frame_buffer = gl_destroy_frame_buffer,
.bind_framebuffer = gl_bind_framebuffer,
.set_viewport = gl_set_viewport,
.set_fov = gl_set_fov,
&model_funcs
.capture_screen = gl_capture_screen,
.model_funcs = &model_funcs
};
static general_funcs_t plugin_info_general_funcs = {

View File

@ -64,30 +64,31 @@ glsl_vid_render_create_context (void *data)
}
static vid_model_funcs_t model_funcs = {
sizeof (glsltex_t),
glsl_Mod_LoadLighting,
0,//Mod_SubdivideSurface,
glsl_Mod_ProcessTexture,
.texture_render_size = sizeof (glsltex_t),
Mod_LoadIQM,
Mod_LoadAliasModel,
Mod_LoadSpriteModel,
.Mod_LoadLighting = glsl_Mod_LoadLighting,
//.Mod_SubdivideSurface = 0,
.Mod_ProcessTexture = glsl_Mod_ProcessTexture,
glsl_Mod_MakeAliasModelDisplayLists,
glsl_Mod_LoadAllSkins,
glsl_Mod_FinalizeAliasModel,
glsl_Mod_LoadExternalSkins,
glsl_Mod_IQMFinish,
0,
glsl_Mod_SpriteLoadFrames,
.Mod_LoadIQM = Mod_LoadIQM,
.Mod_LoadAliasModel = Mod_LoadAliasModel,
.Mod_LoadSpriteModel = Mod_LoadSpriteModel,
Skin_Free,
Skin_SetColormap,
Skin_SetSkin,
glsl_Skin_SetupSkin,
Skin_SetTranslation,
glsl_Skin_ProcessTranslation,
glsl_Skin_InitTranslations,
.Mod_MakeAliasModelDisplayLists = glsl_Mod_MakeAliasModelDisplayLists,
.Mod_LoadAllSkins = glsl_Mod_LoadAllSkins,
.Mod_FinalizeAliasModel = glsl_Mod_FinalizeAliasModel,
.Mod_LoadExternalSkins = glsl_Mod_LoadExternalSkins,
.Mod_IQMFinish = glsl_Mod_IQMFinish,
.alias_cache = 0,
.Mod_SpriteLoadFrames = glsl_Mod_SpriteLoadFrames,
.Skin_Free = Skin_Free,
.Skin_SetColormap = Skin_SetColormap,
.Skin_SetSkin = Skin_SetSkin,
.Skin_SetupSkin = glsl_Skin_SetupSkin,
.Skin_SetTranslation = Skin_SetTranslation,
.Skin_ProcessTranslation = glsl_Skin_ProcessTranslation,
.Skin_InitTranslations = glsl_Skin_InitTranslations,
};
static void
@ -442,56 +443,57 @@ glsl_capture_screen (capfunc_t callback, void *data)
}
vid_render_funcs_t glsl_vid_render_funcs = {
glsl_vid_render_init,
glsl_Draw_CharBuffer,
glsl_Draw_Character,
glsl_Draw_String,
glsl_Draw_nString,
glsl_Draw_AltString,
glsl_Draw_ConsoleBackground,
glsl_Draw_Crosshair,
glsl_Draw_CrosshairAt,
glsl_Draw_TileClear,
glsl_Draw_Fill,
glsl_Draw_Line,
glsl_Draw_TextBox,
glsl_Draw_FadeScreen,
glsl_Draw_BlendScreen,
glsl_Draw_CachePic,
glsl_Draw_UncachePic,
glsl_Draw_MakePic,
glsl_Draw_DestroyPic,
glsl_Draw_PicFromWad,
glsl_Draw_Pic,
glsl_Draw_Picf,
glsl_Draw_SubPic,
glsl_Draw_AddFont,
glsl_Draw_FontString,
.init = glsl_vid_render_init,
glsl_ParticleSystem,
glsl_R_Init,
glsl_R_ClearState,
glsl_R_LoadSkys,
glsl_R_NewScene,
glsl_R_LineGraph,
glsl_begin_frame,
glsl_render_view,
glsl_R_DrawParticles,
glsl_draw_transparent,
glsl_post_process,
glsl_set_2d,
glsl_end_frame,
.Draw_CharBuffer = glsl_Draw_CharBuffer,
.Draw_Character = glsl_Draw_Character,
.Draw_String = glsl_Draw_String,
.Draw_nString = glsl_Draw_nString,
.Draw_AltString = glsl_Draw_AltString,
.Draw_ConsoleBackground = glsl_Draw_ConsoleBackground,
.Draw_Crosshair = glsl_Draw_Crosshair,
.Draw_CrosshairAt = glsl_Draw_CrosshairAt,
.Draw_TileClear = glsl_Draw_TileClear,
.Draw_Fill = glsl_Draw_Fill,
.Draw_Line = glsl_Draw_Line,
.Draw_TextBox = glsl_Draw_TextBox,
.Draw_FadeScreen = glsl_Draw_FadeScreen,
.Draw_BlendScreen = glsl_Draw_BlendScreen,
.Draw_CachePic = glsl_Draw_CachePic,
.Draw_UncachePic = glsl_Draw_UncachePic,
.Draw_MakePic = glsl_Draw_MakePic,
.Draw_DestroyPic = glsl_Draw_DestroyPic,
.Draw_PicFromWad = glsl_Draw_PicFromWad,
.Draw_Pic = glsl_Draw_Pic,
.Draw_Picf = glsl_Draw_Picf,
.Draw_SubPic = glsl_Draw_SubPic,
.Draw_AddFont = glsl_Draw_AddFont,
.Draw_FontString = glsl_Draw_FontString,
glsl_create_cube_map,
glsl_create_frame_buffer,
glsl_destroy_frame_buffer,
glsl_bind_framebuffer,
glsl_set_viewport,
glsl_set_fov,
.ParticleSystem = glsl_ParticleSystem,
.R_Init = glsl_R_Init,
.R_ClearState = glsl_R_ClearState,
.R_LoadSkys = glsl_R_LoadSkys,
.R_NewScene = glsl_R_NewScene,
.R_LineGraph = glsl_R_LineGraph,
.begin_frame = glsl_begin_frame,
.render_view = glsl_render_view,
.draw_particles = glsl_R_DrawParticles,
.draw_transparent = glsl_draw_transparent,
.post_process = glsl_post_process,
.set_2d = glsl_set_2d,
.end_frame = glsl_end_frame,
glsl_capture_screen,
.create_cube_map = glsl_create_cube_map,
.create_frame_buffer = glsl_create_frame_buffer,
.destroy_frame_buffer = glsl_destroy_frame_buffer,
.bind_framebuffer = glsl_bind_framebuffer,
.set_viewport = glsl_set_viewport,
.set_fov = glsl_set_fov,
&model_funcs
.capture_screen = glsl_capture_screen,
.model_funcs = &model_funcs
};
static general_funcs_t plugin_info_general_funcs = {

View File

@ -73,30 +73,31 @@ sw_vid_render_set_colormap (void *data, const byte *colormap)
}
static vid_model_funcs_t model_funcs = {
0,
sw_Mod_LoadLighting,
0,//Mod_SubdivideSurface,
0,//Mod_ProcessTexture,
.texture_render_size = 0,
Mod_LoadIQM,
Mod_LoadAliasModel,
Mod_LoadSpriteModel,
.Mod_LoadLighting = sw_Mod_LoadLighting,
.Mod_SubdivideSurface = 0,
.Mod_ProcessTexture = 0,
sw_Mod_MakeAliasModelDisplayLists,
sw_Mod_LoadAllSkins,
0,
0,
sw_Mod_IQMFinish,
1,
sw_Mod_SpriteLoadFrames,
.Mod_LoadIQM = Mod_LoadIQM,
.Mod_LoadAliasModel = Mod_LoadAliasModel,
.Mod_LoadSpriteModel = Mod_LoadSpriteModel,
Skin_Free,
Skin_SetColormap,
Skin_SetSkin,
sw_Skin_SetupSkin,
Skin_SetTranslation,
sw_Skin_ProcessTranslation,
sw_Skin_InitTranslations,
.Mod_MakeAliasModelDisplayLists = sw_Mod_MakeAliasModelDisplayLists,
.Mod_LoadAllSkins = sw_Mod_LoadAllSkins,
.Mod_FinalizeAliasModel = 0,
.Mod_LoadExternalSkins = 0,
.Mod_IQMFinish = sw_Mod_IQMFinish,
.alias_cache = 1,
.Mod_SpriteLoadFrames = sw_Mod_SpriteLoadFrames,
.Skin_Free = Skin_Free,
.Skin_SetColormap = Skin_SetColormap,
.Skin_SetSkin = Skin_SetSkin,
.Skin_SetupSkin = sw_Skin_SetupSkin,
.Skin_SetTranslation = Skin_SetTranslation,
.Skin_ProcessTranslation = sw_Skin_ProcessTranslation,
.Skin_InitTranslations = sw_Skin_InitTranslations,
};
static void
@ -456,56 +457,57 @@ sw_capture_screen (capfunc_t callback, void *data)
}
vid_render_funcs_t sw_vid_render_funcs = {
sw_vid_render_init,
sw_Draw_CharBuffer,
Draw_Character,
Draw_String,
Draw_nString,
Draw_AltString,
Draw_ConsoleBackground,
Draw_Crosshair,
Draw_CrosshairAt,
Draw_TileClear,
Draw_Fill,
Draw_Line,
Draw_TextBox,
Draw_FadeScreen,
Draw_BlendScreen,
Draw_CachePic,
Draw_UncachePic,
Draw_MakePic,
Draw_DestroyPic,
Draw_PicFromWad,
Draw_Pic,
Draw_Picf,
Draw_SubPic,
Draw_AddFont,
Draw_FontString,
.init = sw_vid_render_init,
sw_ParticleSystem,
sw_R_Init,
R_ClearState,
R_LoadSkys,
R_NewScene,
R_LineGraph,
sw_begin_frame,
sw_render_view,
R_DrawParticles,
sw_draw_transparent,
sw_post_process,
sw_set_2d,
sw_end_frame,
.Draw_CharBuffer = sw_Draw_CharBuffer,
.Draw_Character = Draw_Character,
.Draw_String = Draw_String,
.Draw_nString = Draw_nString,
.Draw_AltString = Draw_AltString,
.Draw_ConsoleBackground = Draw_ConsoleBackground,
.Draw_Crosshair = Draw_Crosshair,
.Draw_CrosshairAt = Draw_CrosshairAt,
.Draw_TileClear = Draw_TileClear,
.Draw_Fill = Draw_Fill,
.Draw_Line = Draw_Line,
.Draw_TextBox = Draw_TextBox,
.Draw_FadeScreen = Draw_FadeScreen,
.Draw_BlendScreen = Draw_BlendScreen,
.Draw_CachePic = Draw_CachePic,
.Draw_UncachePic = Draw_UncachePic,
.Draw_MakePic = Draw_MakePic,
.Draw_DestroyPic = Draw_DestroyPic,
.Draw_PicFromWad = Draw_PicFromWad,
.Draw_Pic = Draw_Pic,
.Draw_Picf = Draw_Picf,
.Draw_SubPic = Draw_SubPic,
.Draw_AddFont = Draw_AddFont,
.Draw_FontString = Draw_FontString,
sw_create_cube_map,
sw_create_frame_buffer,
sw_destroy_frame_buffer,
sw_bind_framebuffer,
sw_set_viewport,
sw_set_fov,
.ParticleSystem = sw_ParticleSystem,
.R_Init = sw_R_Init,
.R_ClearState = R_ClearState,
.R_LoadSkys = R_LoadSkys,
.R_NewScene = R_NewScene,
.R_LineGraph = R_LineGraph,
.begin_frame = sw_begin_frame,
.render_view = sw_render_view,
.draw_particles = R_DrawParticles,
.draw_transparent = sw_draw_transparent,
.post_process = sw_post_process,
.set_2d = sw_set_2d,
.end_frame = sw_end_frame,
sw_capture_screen,
.create_cube_map = sw_create_cube_map,
.create_frame_buffer = sw_create_frame_buffer,
.destroy_frame_buffer = sw_destroy_frame_buffer,
.bind_framebuffer = sw_bind_framebuffer,
.set_viewport = sw_set_viewport,
.set_fov = sw_set_fov,
&model_funcs
.capture_screen = sw_capture_screen,
.model_funcs = &model_funcs
};
static general_funcs_t plugin_info_general_funcs = {

View File

@ -670,30 +670,31 @@ vulkan_vid_render_create_context (void *data)
}
static vid_model_funcs_t model_funcs = {
sizeof (vulktex_t) + 2 * sizeof (qfv_tex_t),
vulkan_Mod_LoadLighting,
vulkan_Mod_SubdivideSurface,
vulkan_Mod_ProcessTexture,
.texture_render_size = sizeof (vulktex_t) + 2 * sizeof (qfv_tex_t),
Mod_LoadIQM,
Mod_LoadAliasModel,
Mod_LoadSpriteModel,
.Mod_LoadLighting = vulkan_Mod_LoadLighting,
.Mod_SubdivideSurface = vulkan_Mod_SubdivideSurface,
.Mod_ProcessTexture = vulkan_Mod_ProcessTexture,
vulkan_Mod_MakeAliasModelDisplayLists,
vulkan_Mod_LoadAllSkins,
vulkan_Mod_FinalizeAliasModel,
vulkan_Mod_LoadExternalSkins,
vulkan_Mod_IQMFinish,
0,
vulkan_Mod_SpriteLoadFrames,
.Mod_LoadIQM = Mod_LoadIQM,
.Mod_LoadAliasModel = Mod_LoadAliasModel,
.Mod_LoadSpriteModel = Mod_LoadSpriteModel,
Skin_Free,
Skin_SetColormap,
Skin_SetSkin,
vulkan_Skin_SetupSkin,
Skin_SetTranslation,
vulkan_Skin_ProcessTranslation,
vulkan_Skin_InitTranslations,
.Mod_MakeAliasModelDisplayLists = vulkan_Mod_MakeAliasModelDisplayLists,
.Mod_LoadAllSkins = vulkan_Mod_LoadAllSkins,
.Mod_FinalizeAliasModel = vulkan_Mod_FinalizeAliasModel,
.Mod_LoadExternalSkins = vulkan_Mod_LoadExternalSkins,
.Mod_IQMFinish = vulkan_Mod_IQMFinish,
.alias_cache = 0,
.Mod_SpriteLoadFrames = vulkan_Mod_SpriteLoadFrames,
.Skin_Free = Skin_Free,
.Skin_SetColormap = Skin_SetColormap,
.Skin_SetSkin = Skin_SetSkin,
.Skin_SetupSkin = vulkan_Skin_SetupSkin,
.Skin_SetTranslation = Skin_SetTranslation,
.Skin_ProcessTranslation = vulkan_Skin_ProcessTranslation,
.Skin_InitTranslations = vulkan_Skin_InitTranslations,
};
static void
@ -750,56 +751,57 @@ vulkan_vid_render_shutdown (void)
}
vid_render_funcs_t vulkan_vid_render_funcs = {
vulkan_vid_render_init,
vulkan_Draw_CharBuffer,
vulkan_Draw_Character,
vulkan_Draw_String,
vulkan_Draw_nString,
vulkan_Draw_AltString,
vulkan_Draw_ConsoleBackground,
vulkan_Draw_Crosshair,
vulkan_Draw_CrosshairAt,
vulkan_Draw_TileClear,
vulkan_Draw_Fill,
vulkan_Draw_Line,
vulkan_Draw_TextBox,
vulkan_Draw_FadeScreen,
vulkan_Draw_BlendScreen,
vulkan_Draw_CachePic,
vulkan_Draw_UncachePic,
vulkan_Draw_MakePic,
vulkan_Draw_DestroyPic,
vulkan_Draw_PicFromWad,
vulkan_Draw_Pic,
vulkan_Draw_Picf,
vulkan_Draw_SubPic,
vulkan_Draw_AddFont,
vulkan_Draw_FontString,
.init = vulkan_vid_render_init,
vulkan_ParticleSystem,
vulkan_R_Init,
vulkan_R_ClearState,
vulkan_R_LoadSkys,
vulkan_R_NewScene,
vulkan_R_LineGraph,
vulkan_begin_frame,
vulkan_render_view,
vulkan_draw_particles,
vulkan_draw_transparent,
vulkan_post_process,
vulkan_set_2d,
vulkan_end_frame,
.Draw_CharBuffer = vulkan_Draw_CharBuffer,
.Draw_Character = vulkan_Draw_Character,
.Draw_String = vulkan_Draw_String,
.Draw_nString = vulkan_Draw_nString,
.Draw_AltString = vulkan_Draw_AltString,
.Draw_ConsoleBackground = vulkan_Draw_ConsoleBackground,
.Draw_Crosshair = vulkan_Draw_Crosshair,
.Draw_CrosshairAt = vulkan_Draw_CrosshairAt,
.Draw_TileClear = vulkan_Draw_TileClear,
.Draw_Fill = vulkan_Draw_Fill,
.Draw_Line = vulkan_Draw_Line,
.Draw_TextBox = vulkan_Draw_TextBox,
.Draw_FadeScreen = vulkan_Draw_FadeScreen,
.Draw_BlendScreen = vulkan_Draw_BlendScreen,
.Draw_CachePic = vulkan_Draw_CachePic,
.Draw_UncachePic = vulkan_Draw_UncachePic,
.Draw_MakePic = vulkan_Draw_MakePic,
.Draw_DestroyPic = vulkan_Draw_DestroyPic,
.Draw_PicFromWad = vulkan_Draw_PicFromWad,
.Draw_Pic = vulkan_Draw_Pic,
.Draw_Picf = vulkan_Draw_Picf,
.Draw_SubPic = vulkan_Draw_SubPic,
.Draw_AddFont = vulkan_Draw_AddFont,
.Draw_FontString = vulkan_Draw_FontString,
vulkan_create_cube_map,
vulkan_create_frame_buffer,
vulkan_destroy_frame_buffer,
vulkan_bind_framebuffer,
vulkan_set_viewport,
vulkan_set_fov,
.ParticleSystem = vulkan_ParticleSystem,
.R_Init = vulkan_R_Init,
.R_ClearState = vulkan_R_ClearState,
.R_LoadSkys = vulkan_R_LoadSkys,
.R_NewScene = vulkan_R_NewScene,
.R_LineGraph = vulkan_R_LineGraph,
.begin_frame = vulkan_begin_frame,
.render_view = vulkan_render_view,
.draw_particles = vulkan_draw_particles,
.draw_transparent = vulkan_draw_transparent,
.post_process = vulkan_post_process,
.set_2d = vulkan_set_2d,
.end_frame = vulkan_end_frame,
vulkan_capture_screen,
.create_cube_map = vulkan_create_cube_map,
.create_frame_buffer = vulkan_create_frame_buffer,
.destroy_frame_buffer = vulkan_destroy_frame_buffer,
.bind_framebuffer = vulkan_bind_framebuffer,
.set_viewport = vulkan_set_viewport,
.set_fov = vulkan_set_fov,
&model_funcs
.capture_screen = vulkan_capture_screen,
.model_funcs = &model_funcs
};
static general_funcs_t plugin_info_general_funcs = {