crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Рисование линии в OpenGl
soaup
  опции профиля:
сообщение 11.7.2014, 10:03
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 3.6.2014
Пользователь №: 4152

Спасибо сказали: 0 раз(а)




Репутация:   0  


Рисую через цикл линию из массива множетсва точек. Т.е.:
void glwindow::drawLine(QByteArray &bd, int y) { //bd - массив типа QByteArray
    glPointSize(1);
    glBegin(GL_POINTS);
    for (int j = 0; j < bd.size(); ++j) { //Для каждой точки из массива
        glColor3b(bd[j], bd[j], bd[j]); //Рисование точки, значение которой указывается как яркость
        glVertex2f(j, y); //Координаты точки
    }
    glEnd();
}


Есть контейнер содержащий несколько таких массивов точек. Такая функция вызывается в paintGL в цикле, где все массивы из контейнера отрисовываются.
Рисование множества таких линий отнимает довольно много производительности. Можно ли это как то по другому делать, более оптимизированным способом?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
lanz
  опции профиля:
сообщение 11.7.2014, 21:32
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


glVertex* это Immediate mode, он довольно медленый.
http://stackoverflow.com/questions/6733934...-mean-in-opengl

Надо использовать glDrawElements/Arrays, будет значительно быстрее
https://www.opengl.org/sdk/docs/man2/xhtml/...rawElements.xml
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.5.2024, 1:21