Skip to content

Commit b563f77

Browse files
committed
xrUICore/Windows/UIFrameLineWnd.cpp: reapply one shader optimization
Original COP code calls StartPrimitive and FlushPrimitive only once. We now do the same again, if all texture fragments all in the same file.
1 parent 2757013 commit b563f77

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

src/xrUICore/Windows/UIFrameLineWnd.cpp

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -199,13 +199,22 @@ void CUIFrameLineWnd::DrawElements() const
199199
draw_rect(lt, rb, tex_rect.lt, tex_rect.rb, m_texture_color, ts);
200200
};
201201

202+
bool one_shader = false;
203+
if (m_shader[flFirst] == m_shader[flBack] && m_shader[flBack] == m_shader[flSecond])
204+
one_shader = true;
205+
202206
// first
203-
GEnv.UIRender->StartPrimitive(6, IUIRender::ptTriList, UI().m_currentPointType);
207+
const auto first_tiles = one_shader ? total_tiles + 2 : 1;
208+
GEnv.UIRender->StartPrimitive(6 * first_tiles, IUIRender::ptTriList, UI().m_currentPointType);
204209
draw_tile(first_len, m_tex_rect[flFirst], flFirst);
205-
GEnv.UIRender->FlushPrimitive();
210+
211+
if (!one_shader)
212+
{
213+
GEnv.UIRender->FlushPrimitive();
214+
GEnv.UIRender->StartPrimitive(6 * total_tiles, IUIRender::ptTriList, UI().m_currentPointType);
215+
}
206216

207217
// back
208-
GEnv.UIRender->StartPrimitive(6 * total_tiles, IUIRender::ptTriList, UI().m_currentPointType);
209218
for (u32 i = 0; i < back_tiles; ++i)
210219
{
211220
draw_tile(back_len, m_tex_rect[flBack], flBack);
@@ -221,10 +230,14 @@ void CUIFrameLineWnd::DrawElements() const
221230

222231
draw_tile(back_len * back_remainder, remainder_tc, flBack);
223232
}
224-
GEnv.UIRender->FlushPrimitive();
233+
234+
if (!one_shader)
235+
{
236+
GEnv.UIRender->FlushPrimitive();
237+
GEnv.UIRender->StartPrimitive(6, IUIRender::ptTriList, UI().m_currentPointType);
238+
}
225239

226240
// second
227-
GEnv.UIRender->StartPrimitive(6, IUIRender::ptTriList, UI().m_currentPointType);
228241
draw_tile(second_len, m_tex_rect[flSecond], flSecond);
229242
GEnv.UIRender->FlushPrimitive();
230243
}

0 commit comments

Comments
 (0)