Это почти наверняка накладные расходы всех вызовов функций непосредственного режима, которые убивают вашу производительность. Я бы сделал следующее.
Не используйте GL_LINE_STRIPS
, используйте один список GL_LINES
, чтобы их можно было визуализировать за один раз.
Используйте glDrawArrays
вместо немедленного рендеринга в режиме:
float* coordinates = {....}; //x and y coordinate pairs for all line segments
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_FLOAT, 2 * sizeof(float), coordinates);
glDrawArrays(GL_LINES, 0, 2 * linecount);
glDisableClientState(GL_VERTEX_ARRAY);
(Для еще большей производительности вы можете хранить буфер вершин в чем-то, называемом объектом буфера вершин, но для начала все будет хорошо)
И последнее: если вы отбираете данные для каждой строки, вероятно, быстрее пропустить это и отправить все строки в графический процессор.