大家好.谢谢你点击.
这是我在编写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中定义的结构,如果有人好奇的话).
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)