Here is my progress so far.
I currently own the HTC one US, HTC One International, Galaxy S5 TMobile. Out of those the HTC One international and Galaxy S5 Tmobile show the problems and its really odd. I personally think its a driver issue and have ways around it that works on all the other devices but its a dang hack.
There are 2 possible fixes and both essentially do the same thing (and make no sense). In juce_OpenGLGraphicsContext.cpp::add (const int x, const int y, const int w, const int h, const PixelARGB colour) noexcept in the end of the code you can change:
if (numVertices > numQuads * 4 - 4)
if (numVertices >= numQuads * 4 - 4)
Or the other option is to add 1 extra value onto the vertexData data by changing VertexInfo vertexData [numQuads * 4]; to VertexInfo vertexData [numQuads * 4 + 1];
Both of these things do almost the same thing. They make it so there is an extra vertex value uploaded to the vertex buffer that is never used. Why it works I have not quite figured out yet. I have other code that draws sprites using very similar techniques and I have not run into this issue as the standard VBO works fine and I do not need to do this 'hack'.
Changing the numQuads does nothing. You can put it at 2 and as long as you allocate 1 extra for the vertex data it will still render correctly (albeit slow). But put it back to vertexData[numQuads*4] and it does not render correctly.
I personally do not like not really knowing what is going on so any thoughts on this subject would be greatly appreciated. Worst case this is going out as a short term fix (hack) as we have hundreds of customers with this issue right now.
(I would have had this earlier but the current github doesn't build for Android so I had to make a few tweaks. My version of Juce is very different than the current github so I had to check out so we are all talking about the same thing). Getting so tired of all the Android inconsistencies... almost as bad as getting OpenGL on windows in a stable fashion....