| 110 | } |
| 111 | |
| 112 | static uint32_t QueueTextAndCopyVertices(dmRender::HRenderContext render_context, dmRender::HFontMap font_map, const dmRender::DrawTextParams& params, dmArray<uint8_t>& out_vertices, HTextLayout* out_layout, float* out_radius_sq) |
| 113 | { |
| 114 | dmRender::RenderListBegin(render_context); |
| 115 | dmRender::DrawText(render_context, font_map, 0, 0, params); |
| 116 | |
| 117 | dmRender::TextContext& text_context = render_context->m_TextContext; |
| 118 | if (out_layout) |
| 119 | { |
| 120 | *out_layout = text_context.m_TextEntries.Size() > 0 ? text_context.m_TextEntries[0].m_TextLayout : 0; |
| 121 | } |
| 122 | if (out_radius_sq) |
| 123 | { |
| 124 | *out_radius_sq = text_context.m_TextEntries.Size() > 0 ? text_context.m_TextEntries[0].m_FrustumCullingRadiusSq : 0.0f; |
| 125 | } |
| 126 | |
| 127 | dmRender::FlushTexts(render_context, dmRender::RENDER_ORDER_AFTER_WORLD, true); |
| 128 | dmRender::RenderListEnd(render_context); |
| 129 | dmRender::DrawRenderList(render_context, 0, 0, 0, dmRender::SORT_BACK_TO_FRONT); |
| 130 | |
| 131 | uint32_t vertex_count = text_context.m_VertexIndex; |
| 132 | uint32_t vertex_stride = dmRender::GetFontVertexSize(text_context.m_FontRenderBackend); |
| 133 | uint32_t byte_count = vertex_count * vertex_stride; |
| 134 | |
| 135 | out_vertices.SetCapacity(byte_count); |
| 136 | out_vertices.SetSize(byte_count); |
| 137 | if (byte_count > 0) |
| 138 | { |
| 139 | memcpy(out_vertices.Begin(), text_context.m_ClientBuffer, byte_count); |
| 140 | } |
| 141 | |
| 142 | return vertex_count; |
| 143 | } |
| 144 | |
| 145 | struct TestGlyphVertex |
| 146 | { |
no test coverage detected