一组结构的平面数组?

Sha*_*Cop 2 c c++ opengl

大家好.谢谢你点击.

这是我在编写OpenGL时遇到的一个问题,但它总体上是一个非常普遍的问题 - 因此没有特定的图形.

我有一个结构(不是一个类,只是一个简单的结构),粒子.

typedef struct
{
    float x;
    float y;
    float z;
}float3;

typedef struct
{
   float3 position;
   float3 velocity;
   //...other stuff
}Particle;
Run Code Online (Sandbox Code Playgroud)

我正在使用一堆粒子(粒子*粒子[]),但我有一个函数,需要以x,y,z顺序打包的位置浮点*.

这样我的问题总结:

我的数据:

//I have this in a bunch of encapsulated structs
[... {1.0f, 2.0f, 3.0f,} ... {4.0f, 5.0f, 6.0f} ...]

//I want...
[1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f]
Run Code Online (Sandbox Code Playgroud)

我的问题是......我已经掌握了所有数据!我不想再次使用malloc/memcpy了.有没有办法使用已存在的数据?任何C指针杂技?我也担心对齐/填充等问题.

(float3是CUDA中定义的结构,如果有人好奇的话).

Ben*_*igt 6

glVertexAttribPointer有一个stride专为这种情况设计的参数.

通常,您将把一组Particle对象加载到VBO中,然后使用VBO绑定:

glVertexAttribPointer(shader_arg_position, 3, GL_FLOAT, GL_FALSE, sizeof (Particle), offsetof(Particle, position));
Run Code Online (Sandbox Code Playgroud)