#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