C++ (Qt)void Parser::parseData( const QString &input, QList<QVector3D> &points, QList<QVector3D> &indexes )
C++ (Qt)void Scene::draw(){ // указываем, откуда нужно извлечь данные о массиве вершин glVertexPointer(3, GL_FLOAT, 0, m_vertexArray); // указываем, откуда нужно извлечь данные о массиве цветов вершин glColorPointer(3, GL_FLOAT, 0, m_colorArray); // используя массивы вершин и индексов, строим поверхности glDrawElements(GL_TRIANGLES, m_sizeOfIndexesArray * 3, GL_UNSIGNED_BYTE, m_indexArray);}
C++ (Qt)void Scene::setPointsAndIndexes(QList<QVector3D> &points, QList<QVector3D> &indexes){ // Points m_sizeOfpointsArray = points.size(); m_vertexArray = new GLfloat*[m_sizeOfpointsArray]; const int amountOfCoordinates = 3; for (int i = 0; i < m_sizeOfpointsArray; i++) { m_vertexArray[i] = new GLfloat[amountOfCoordinates]; } for (int row = 0; row < m_sizeOfpointsArray; ++row) { int col = 0; m_vertexArray[row][col++] = points[row].x(); m_vertexArray[row][col++] = points[row].y(); m_vertexArray[row][col] = points[row].z(); } // for (int row = 0; row < m_sizeOfpointsArray; ++row) {// for (int col = 0; col < amountOfCoordinates; ++col) {// qDebug() << m_vertexArray[row][col];// }// } // Indexes m_sizeOfIndexesArray = indexes.size(); m_indexArray = new GLfloat*[m_sizeOfIndexesArray]; for (int i = 0; i < m_sizeOfIndexesArray; i++) { m_indexArray[i] = new GLfloat[amountOfCoordinates]; } for (int row = 0; row < m_sizeOfIndexesArray; ++row) { int col = 0; m_indexArray[row][col++] = indexes[row].x(); m_indexArray[row][col++] = indexes[row].y(); m_indexArray[row][col] = indexes[row].z(); } // for (int row = 0; row < m_sizeOfIndexesArray; ++row) {// for (int col = 0; col < amountOfCoordinates; ++col) {// qDebug() << m_indexArray[row][col];// }// } // Colors m_colorArray = new GLfloat*[m_sizeOfpointsArray]; for (int i = 0; i < m_sizeOfpointsArray; i++) { m_colorArray[i] = new GLfloat[amountOfCoordinates]; } for (int row = 0; row < m_sizeOfpointsArray; ++row) { int col = 0; m_colorArray[row][col++] = 0.1f*( qrand()%11 ); // R - красная составляющая m_colorArray[row][col++] = 0.1f*( qrand()%11 ); // G - зелёная составляющая m_colorArray[row][col] = 0.1f*( qrand()%11 ); // B - синяя составляющая // qDebug() << m_colorArray[row][0] << " " << m_colorArray[row][1] << " " << m_colorArray[row][2]; // qrand()%11 - псевдослучайное число от 0 до 10 } draw();}