Как использовать структуру с переменными разных типов для данных буфера

#opengl

#opengl

Вопрос:

Это структура

 struct ttf_point
{
    float x;                      /* point x coordinate in EM */
    float y;                      /* point y coordinate in EM */
    uint32_t spl : 1;             /* point of spliting process */
    uint32_t onc : 1;             /* point on curve */
    uint32_t res : 30;            /* reserved for internal use */
};
 

Могу ли я использовать первые две переменные x и y из структуры для создания данных буфера, или мне нужно будет скопировать x, y в другой буфер, а затем использовать его.

 glBindBuffer(GL_ARRAY_BUFFER, w_VBO);
glBufferData(GL_ARRAY_BUFFER,  mesh->outline->total_points * sizeof(ttf_point), amp;mesh->outline->cont->pt->x, GL_STATIC_DRAW); 
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(float)   3 * sizeof(uint32_t), (void*)0);
 

Комментарии:

1. Конечно, вы можете, но вы тратите много памяти и вынуждены передавать на графический процессор намного больше данных, чем вам нужно.

2. Именно то, что сказал rabbid: я предлагаю вам использовать структуру массивов вместо массивов структур. См. en.wikipedia.org/wiki/AoS_and_SoA