Мне нужно ускорить некоторые вычисления и результат вычисления, а затем использовать для рисования OpenGL-модели. Главное ускорение архивировано, когда я изменил std :: vector на Concurrency :: concurrent_vector и использовал parallel_for вместо просто для циклов. Этот вектор (или concurrent_vector) рассчитан для цикла (или parallel_for) и содержит вершины для OpenGL для визуализации.vector -> conturrent_vector migration + OpenGL ограничение
Это нормально, используя std :: vector, поскольку процедура рендеринга OpenGL основана на том факте, что std :: vector сохраняет свои элементы в последовательности, которая не является случаем с concurrent_vector. Код работает что-то вроде этого:
glVertexPointer(3, GL_FLOAT, 0, &vectorWithVerticesData[0]);
Для создания concurrent_vector и скопировать его в StD :: вектор является слишком дорогим, так как есть много пунктов.
Итак, вопрос в том, что я хотел бы использовать массивы OpenGL, но также хотел бы использовать concurrent_vector, который несовместим с выходом OpenGL.
Любые предложения?
@ Igor: Поскольку у меня есть еще одна проблема с 'concurrent_vector', я хотел спросить, что вы имеете в виду, говоря, что cv не сохраняет свои элементы в последовательности? У меня сложилось впечатление, что 'concurrent_vector' имеет ту же/подобную структуру памяти, что и вектор, и просто защищает от условий гонки через, например, внутренние мьютексы. – MikeMB