将一种数据类型的向量复制到相同数据类型的struct的有效方法是什么?

问题描述 投票:2回答:1

我有一个带有3个成员变量(vec3)pos(vec3)norm(vec2)texCoord]的struct向量,并且我还有另外3个独立的向量,它们分别为(vec3)x(vec3)y(vec2) z,我想复制/合并将来自独立向量的数据转换为我上面已经提到的结构数据类型的向量,以便变量将根据结构中的变量对齐。我可以通过遍历向量的每个成员并分配变量来对此进行归档,但是Iam寻找一种更快,更有效的方法,可以通过一个或两个函数调用将向量的整个范围复制到另一个向量,这样可以实现这一目标?

伪代码:

struct foo
{
vec3 pos;
vec3 norm;
vec2 texCoord;
}

vector<foo> attributes;

vector<vec3> x;
vector<vec3> y;
vector<vec2> z;

copy(x, attributes, offsetof(foo::pos), stride);
copy(y, attributes, offsetof(foo::norm), stride);
copy(z, attributes, offsetof(foo::texCoord), stride);

我有一个带有3个成员变量(vec3)pos(vec3)norm(vec2)texCoord的struct向量,并且我分别有(vec3)x(vec3)y(vec2)z的其他3个独立向量复制/合并...

c++ vector struct memory-alignment
1个回答
0
投票

嗯,如果我们知道对齐方式,我们可能会做一些低级的脏事。

© www.soinside.com 2019 - 2024. All rights reserved.