diff options
| -rw-r--r-- | src/text.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/text.cc b/src/text.cc index 57ef433..cc06508 100644 --- a/src/text.cc +++ b/src/text.cc @@ -1,5 +1,6 @@ #include "text.h" +#include "cglm/types.h" #include "freetype/freetype.h" #include "shaders.h" #include "utils.h" @@ -13,6 +14,28 @@ static void font_context_sampler_desc(struct sg_sampler_desc* desc) { desc->wrap_v = SG_WRAP_CLAMP_TO_EDGE; } +static void font_context_layout_attr_pos( + struct sg_vertex_attr_state* attr, + struct sg_vertex_buffer_layout_state* layout) { + wayc_notnull(attr); + wayc_notnull(layout); + + attr->format = SG_VERTEXFORMAT_FLOAT2; + attr->buffer_index = 0; + layout->stride = sizeof(vec2); +} + +static void font_context_layout_attr_uv( + struct sg_vertex_attr_state* attr, + struct sg_vertex_buffer_layout_state* layout) { + wayc_notnull(attr); + wayc_notnull(layout); + + attr->format = SG_VERTEXFORMAT_FLOAT2; + attr->buffer_index = 0; + layout->stride = sizeof(vec2); +} + static void font_context_pipeline_desc(struct sg_pipeline_desc* desc) { wayc_notnull(desc); @@ -20,6 +43,13 @@ static void font_context_pipeline_desc(struct sg_pipeline_desc* desc) { text_shader_desc(sg_query_backend()); sg_shader shader = sg_make_shader(shader_desc); + sg_vertex_layout_state vertex_layout = {}; + font_context_layout_attr_pos(&vertex_layout.attrs[0], + &vertex_layout.buffers[0]); + font_context_layout_attr_uv(&vertex_layout.attrs[1], + &vertex_layout.buffers[0]); + + desc->layout = vertex_layout; desc->shader = shader; } |
