QLinkedList <QByteArray> B;void glwindow::paintGL() { glClear(GL_COLOR_BUFFER_BIT| GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); int j = 0; QMutableLinkedListIterator <QByteArray> i(B); while (i.hasNext()) { //Для каждого элемента буфера drawLine(i.next(), j); //Функция рисования линии ++j; }}void glwindow::drawLine(QByteArray &bd, int y) { glPointSize(1*nSca); glBegin(GL_POINTS); for (int j = 0; j < bd.size(); ++j) { //Для каждой точки из пакета glColor3b(bd.at(j), bd.at(j), bd.at(j)); //Рисование точки, значение которой указывается как яркость glVertex2f(j, y); //Координаты точки } glEnd();}void glwindow::resizeGL(int nWidth, int nHeight) { glViewport(0, 0, (GLint)nWidth, (GLint)nHeight); glMatrixMode(GL_PROJECTION); glLoadIdentity(); GLfloat x = GLfloat(nWidth)/nHeight; glOrtho(0, 53248, 130, 0, -1, 1); glMatrixMode(GL_MODELVIEW);}
void glwindow::sendBD(QByteArray &bd) { ++i; B.prepend(bd); //Поместить пакет в начало буфера if (B.count() > 130) B.removeLast(); //Удалять последний если количество элементов в буфере больше нужного if (i > 10) { //Обновление изображения после получения второго пакета подряд updateGL(); i = 0; }}
C++ (Qt)glDrawElements(GL_TRIANGLES, arrayV.length, GL_UNSIGNED_INT, index);
C++ (Qt)glEnableClientState(GL_VERTEX_ARRAY);glVertexPointer(3, GL_FLOAT, 0, &points[0]); glEnableClientState(GL_COLOR_ARRAY);glColorPointer(1, GL_UNSIGNED_BYTE, 0, &colors[0]); glDrawArrays(GL_POINTS, 0, points.size());
C++ (Qt)GLfloat vertices[] = {...};...// деффинировать указатель на массивglEnableClientState(GL_VERTEX_ARRAY);glVertexPointer(3, GL_FLOAT, 0, vertices); // отрисовкаglDrawArrays(GL_TRIANGLES, 0, 36); // деактивация массиваglDisableClientState(GL_VERTEX_ARRAY);
C++ (Qt)glDrawArrays(GL_LINE_STRIP, 0, points.size());
C++ (Qt)GLfloat vertices[] = {...};