【发布时间】:2012-03-30 22:09:59
【问题描述】:
我需要加速一些计算和计算结果然后用于绘制OpenGL模型。 当我将 std::vector 更改为 Concurrency::concurrent_vector 并使用 parallel_for 而不仅仅是 for 循环时,主要加速存档。 这个向量(或concurrent_vector)在for(或parallel_for)循环中计算,并包含供OpenGL可视化的顶点。
使用 std::vector 很好,因为 OpenGL 渲染过程依赖于 std::vector 保持其项目按顺序排列的事实,而 concurrent_vector 不是这种情况。代码运行如下:
glVertexPointer(3, GL_FLOAT, 0, &vectorWithVerticesData[0]);
生成 concurrent_vector 并将其复制到 std::vector 太昂贵了,因为项目很多。
所以,问题是:我想使用 OpenGL 数组,但也想使用与 OpenGL 输出不兼容的 concurrent_vector。
有什么建议吗?
【问题讨论】:
-
@Igor:因为我对
concurrent_vector有另一个问题,我想问一下您的意思是,cv 没有按顺序排列其项目?我的印象是,concurrent_vector具有与向量相同/相似的内存布局,并且只是通过例如防止竞争条件。内部互斥体。
标签: windows opengl concurrency ppl