FIX: texture is black when plate name is all space

Change-Id: I73962df92592aba7921a6d481fe0951a93c27455
(cherry picked from commit 2737c1d0b46c1ace30978412462cc37d03925685)
This commit is contained in:
zhou.xu 2023-07-06 15:25:39 +08:00 committed by Lane.Wei
parent 4dd068b505
commit d4e7cc926f

View file

@ -435,10 +435,6 @@ void PartPlate::calc_vertex_for_plate_name(GLTexture &texture, GeometryBuffer &b
auto triangles = triangulate_expolygon_2f(poly, NORMALS_UP);
if (!buffer.set_from_triangles(triangles, GROUND_Z)) BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "Unable to generate geometry buffers for icons\n";
if (m_plate_name_vbo_id > 0) {
glsafe(::glDeleteBuffers(1, &m_plate_name_vbo_id));
m_plate_name_vbo_id = 0;
}
}
}
@ -474,10 +470,6 @@ void PartPlate::calc_vertex_for_plate_name_edit_icon(GLTexture *texture, int ind
if (!buffer.set_from_triangles(triangles, GROUND_Z))
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << "Unable to generate geometry buffers for icons\n";
}
if (m_plate_name_edit_vbo_id > 0) {
glsafe(::glDeleteBuffers(1, &m_plate_name_edit_vbo_id));
m_plate_name_edit_vbo_id = 0;
}
}
void PartPlate::calc_vertex_for_icons(int index, GeometryBuffer &buffer)
@ -842,13 +834,29 @@ void PartPlate::render_plate_name_texture(int position_id, int tex_coords_id)
}
return;
}
if (m_name_texture.get_id() == 0 || m_name_change) {
m_name_change = false;
if (m_name_change == true) {
m_name_change = false;
if (m_plate_name_vbo_id > 0) {
glsafe(::glDeleteBuffers(1, &m_plate_name_vbo_id));
m_plate_name_vbo_id = 0;
}
if (m_plate_name_edit_vbo_id > 0) {
glsafe(::glDeleteBuffers(1, &m_plate_name_edit_vbo_id));
m_plate_name_edit_vbo_id = 0;
}
}
if (m_plate_name_vbo_id==0) {
if (generate_plate_name_texture()) {
calc_vertex_for_plate_name(m_name_texture, m_plate_name_icon);
calc_vertex_for_plate_name_edit_icon(&m_name_texture, 0, m_plate_name_edit_icon);
}
}
else {
if (m_plate_name_edit_vbo_id==0) {
calc_vertex_for_plate_name_edit_icon(nullptr, 0, m_plate_name_edit_icon);
}
return;
}
}
if (m_plate_name_vbo_id == 0 && m_plate_name_icon.get_vertices_data_size() > 0) {
glsafe(::glGenBuffers(1, &m_plate_name_vbo_id));
@ -1682,6 +1690,9 @@ bool PartPlate::generate_plate_name_texture()
wxString cur_plate_name = from_u8(m_name);
wxGCDC dc;
wxString limitTextWidth = wxControl::Ellipsize(cur_plate_name, dc, wxELLIPSIZE_END, bed_width);
if (limitTextWidth.Length()==0) {
return false;
}
// generate m_name_texture texture from m_name with generate_from_text_string
m_name_texture.reset();
auto * font = &Label::Head_32;