glDrawArrays and glDrawElements

This topic contains 1 reply, has 2 voices, and was last updated by  Gordon 8 years, 1 month ago.

Viewing 2 posts - 1 through 2 (of 2 total)
  • Author
    Posts
  • #29872

    vhugo
    Member

    Hi,

    I have a little problem kind of question. I was using glDrawElements to render a lot of lines as triangle strips however I have merged all the strips and used a color pointer in order to do just one call to glDrawElements.

    However I “hit” with a limit of 16 bits GL_UNSIGNED_SHORT as the indices for glDrawElements  so 65536 the limit to vertice indice.

    My value is almost twice the limit, because I have a lot of lines, so I have to changed to glDrawArrays with vertices in strips in order to render all the lines.

    My question is simple, was my choice a good solution, or glDrawArrays is not so slow ?

    If I have to use glDrawElements and will have to do several calls instead of only one with glDrawArrays.

    Thanks,

    Victor

    #33282

    Gordon
    Moderator

    If you definitely need to render this many vertices and you’re getting a speed of render that you’re happy with then I’d say this may be a good choice.

    Another solution would be to break up your VBOs into smaller numbers of vertices so that the indices can still fit into 16-bit values. Arbitrarily breaking up the vertices may add very few draw calls this way, but still reduce the amount of vertex data put through the system compared to using arrays. If you only have a small number of colours then batching by colour may save you bandwidth that makes up for the extra draw call overhead. There may also be another logical choice to split up the vertices by state in the code.

    The best way to tackle this may also depend on your target platform.

Viewing 2 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic.