aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxbmc <fernetmenta@online.de>2013-02-21 18:09:07 +0100
committerS. Davilla <davilla@4pi.com>2013-02-25 12:56:16 -0500
commit32942b26aad801432f42fdc78f9ea25d3f45b729 (patch)
treef07e2fc71db54021674124d0d390052bfcda9981
parent84fef541dfe46dd34dfad0c8b5865de6c529b385 (diff)
fix ass subs for GLES
-rw-r--r--xbmc/cores/VideoRenderers/OverlayRendererGL.cpp33
1 files changed, 22 insertions, 11 deletions
diff --git a/xbmc/cores/VideoRenderers/OverlayRendererGL.cpp b/xbmc/cores/VideoRenderers/OverlayRendererGL.cpp
index 4375d19cae..ed8e48d487 100644
--- a/xbmc/cores/VideoRenderers/OverlayRendererGL.cpp
+++ b/xbmc/cores/VideoRenderers/OverlayRendererGL.cpp
@@ -359,7 +359,7 @@ COverlayGlyphGL::~COverlayGlyphGL()
void COverlayGlyphGL::Render(SRenderState& state)
{
- if (m_texture == 0)
+ if ((m_texture == 0) || (m_count == 0))
return;
glEnable(GL_TEXTURE_2D);
@@ -418,21 +418,32 @@ void COverlayGlyphGL::Render(SRenderState& state)
GLint colLoc = g_Windowing.GUIShaderGetCol();
GLint tex0Loc = g_Windowing.GUIShaderGetCoord0();
- glVertexAttribPointer(posLoc, 3, GL_FLOAT, GL_FALSE, sizeof(VERTEX), (char*)m_vertex + offsetof(VERTEX, x));
- glVertexAttribPointer(colLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(VERTEX), (char*)m_vertex + offsetof(VERTEX, r));
- glVertexAttribPointer(tex0Loc, 2, GL_FLOAT, GL_FALSE, sizeof(VERTEX), (char*)m_vertex + offsetof(VERTEX, u));
+ // stack object until VBOs will be used
+ std::vector<VERTEX> vecVertices( 6 * m_count);
+ VERTEX *vertices = &vecVertices[0];
+
+ for (int i=0; i<m_count*4; i+=4)
+ {
+ *vertices++ = m_vertex[i];
+ *vertices++ = m_vertex[i+1];
+ *vertices++ = m_vertex[i+2];
+
+ *vertices++ = m_vertex[i+1];
+ *vertices++ = m_vertex[i+3];
+ *vertices++ = m_vertex[i+2];
+ }
+
+ vertices = &vecVertices[0];
+
+ glVertexAttribPointer(posLoc, 3, GL_FLOAT, GL_FALSE, sizeof(VERTEX), (char*)vertices + offsetof(VERTEX, x));
+ glVertexAttribPointer(colLoc, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(VERTEX), (char*)vertices + offsetof(VERTEX, r));
+ glVertexAttribPointer(tex0Loc, 2, GL_FLOAT, GL_FALSE, sizeof(VERTEX), (char*)vertices + offsetof(VERTEX, u));
glEnableVertexAttribArray(posLoc);
glEnableVertexAttribArray(colLoc);
glEnableVertexAttribArray(tex0Loc);
- // GLES2 version
- // As using triangle strips, have to do in sets of 4.
- // This is due to limitations of ES, in that tex/col has to be same size as ver!
- for (int i=0; i<(m_count*4); i+=4)
- {
- glDrawArrays(GL_TRIANGLE_STRIP, i, 4);
- }
+ glDrawArrays(GL_TRIANGLES, 0, vecVertices.size());
glDisableVertexAttribArray(posLoc);
glDisableVertexAttribArray(colLoc);