-#ifndef FONT_H
-#define FONT_H
-
+#pragma once
#include "model.h"
#include "entity.h"
-#include "camera.h"
+#include "vg/vg_camera.h"
#include "shaders/model_font.h"
#include "shaders/scene_font.h"
#include "world_render.h"
#include "depth_compare.h"
+#include <string.h>
enum efont_SRglyph{
k_SRglyph_end = 0x00, /* control characters */
vg_linear_clear( vg_mem.scratch );
mdl_array_ptr fonts;
- mdl_load_array( &font->mdl, &fonts, "ent_font", vg_mem.scratch );
+ MDL_LOAD_ARRAY( &font->mdl, &fonts, ent_font, vg_mem.scratch );
font->info = *((ent_font *)mdl_arritm(&fonts,0));
- mdl_load_array( &font->mdl, &font->font_variants, "ent_font_variant", alloc);
- mdl_load_array( &font->mdl, &font->glyphs, "ent_glyph", alloc );
+ MDL_LOAD_ARRAY( &font->mdl, &font->font_variants, ent_font_variant, alloc);
+ MDL_LOAD_ARRAY( &font->mdl, &font->glyphs, ent_glyph, alloc );
vg_linear_clear( vg_mem.scratch );
void *data = vg_linear_alloc( vg_mem.scratch, tex0->file.pack_size );
mdl_fread_pack_file( &font->mdl, &tex0->file, data );
- mdl_async_load_glmesh( &font->mdl, &font->mesh );
+ mdl_async_load_glmesh( &font->mdl, &font->mesh, NULL );
vg_tex2d_load_qoi_async( data, tex0->file.pack_size,
VG_TEX2D_LINEAR|VG_TEX2D_CLAMP,
&font->texture );
mdl_close( &font->mdl );
}
-static void font3d_init(void){
- shader_model_font_register();
- shader_scene_font_register();
-}
-
static u32 font3d_find_variant( font3d *font, const char *name ){
for( u32 i=0; i<mdl_arrcount( &font->font_variants ); i ++ ){
ent_font_variant *variant = mdl_arritm( &font->font_variants, i );
*/
static void font3d_bind( font3d *font, enum font_shader shader,
int depth_compare, world_instance *world,
- camera *cam ){
+ vg_camera *cam ){
gui_font3d.shader = shader;
gui_font3d.font = font;
glActiveTexture( GL_TEXTURE1 );
glBindTexture( GL_TEXTURE_2D, font->texture );
- if( shader == k_font_shader_default ){
+ if( shader == k_font_shader_default )
+ {
shader_model_font_use();
shader_model_font_uColour( (v4f){1.0f,1.0f,1.0f,1.0f} );
shader_model_font_uTexMain( 1 );
+ shader_model_font_uDepthMode( depth_compare );
- shader_model_font_uDepthCompare( depth_compare );
if( depth_compare ){
depth_compare_bind(
shader_model_font_uTexSceneDepth,
shader_model_font_uPv( cam->mtx.pv );
}
- else if( shader == k_font_shader_world ){
- assert( world );
+ else if( shader == k_font_shader_world )
+ {
shader_scene_font_use();
shader_scene_font_uTexGarbage(0);
shader_scene_font_uTexMain(1);
}
static void font3d_set_transform( const char *text,
- camera *cam, m4x3f transform ){
+ vg_camera *cam, m4x3f transform ){
v4_copy( (v4f){0.0f,0.0f,0.0f,1.0f}, gui_font3d.offset );
m4x4f prev_mtx;
}
static f32 font3d_simple_draw( u32 variant_id, const char *text,
- camera *cam, m4x3f transform ){
+ vg_camera *cam, m4x3f transform ){
if( !text ) return 0.0f;
gui_font3d.variant_id = variant_id;
return width;
}
-
-#endif /* FONT_H */