Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

Community Reputation

101 Neutral

About Jawline

  • Rank
  1. Jawline

    OpenGL ES 2 text rendering bug

    Depth test solved it, thank you!
  2. Jawline

    OpenGL ES 2 text rendering bug

    Hi thanks for responding. I have alpha enabled - sorry I would have screenshotted but its on android and ddms is a pain. I'll try changing the depth test settings and seeing the result.
  3. I'm drawing text in OpenGL ES 2.0, I have loaded in the textures from truetype fonts and draw them as two triangles. My issue is that when two characters overlap (For example say writing Team the triangles drawn textured with a and m overlap) then for some reason only one letter shows up, so with respect to the example above you would see the a and half of the e cut off up until the a texture ends. I used the same technique with OpenGL 1 in an old project (Without shaders) and didn't have issues (Both characters showed up fine). The code that draws each character is [source lang="cpp"] //Get a pointer to the drawBuffers vertices to manipulate float vertices[4 * 3]; // = drawBuffer->getVertices(); //Set the drawBuffers vertices vertices[0] = X + offsetX; vertices[1] = Y + offsetY; vertices[2] = 0; vertices[3] = X + offsetX; vertices[4] = Y + Height + offsetY; vertices[5] = 0; vertices[6] = X + Width + offsetX; vertices[7] = Y + Height + offsetY; vertices[8] = 0; vertices[9] = X + Width + offsetX; vertices[10] = Y + offsetY; vertices[11] = 0; float tex[4 * 2]; tex[0] = 0; tex[1] = 0; tex[2] = 0; tex[3] = 1; tex[4] = 1; tex[5] = 1; tex[6] = 1; tex[7] = 0; unsigned short indices[6] = { 0, 1, 2, 2, 3, 0 }; fontShader->MakeActive(); fontShader->SetMVP(projection.Multiply(view)); fontShader->SetVertices(vertices, 4, 3 * sizeof(float)); fontShader->SetTextureCoords(tex, 4, 2 * sizeof(float)); fontShader->SetBaseTexture(CharList[Char].charTexture); glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, indices);[/source] and the shader for the UI is [source lang="cpp"][START FRAGMENT] #ifdef GL_ES precision lowp float; #endif varying vec2 v_Tc; uniform sampler2D u_BaseTexture; void main() { gl_FragColor = texture2D(u_BaseTexture, v_Tc); } [END FRAGMENT] [START VERTEX] uniform mat4 u_MVP; attribute vec3 a_Vertex; varying vec2 v_Tc; attribute vec2 a_TexCoord; void main() { v_Tc = a_TexCoord; vec4 position = vec4(a_Vertex.xyz, 1.0); gl_Position = u_MVP * position; } [END VERTEX] [/source] any insight into this issue would be invaluable.
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!