bool load_vb_buffers(struct gs_program *program, struct gs_vertex_buffer *vb) { struct gs_shader *shader = program->vertex_shader; size_t i; if (!gl_bind_vertex_array(vb->vao)) return false; for (i = 0; i < shader->attribs.num; i++) { struct shader_attrib *attrib = shader->attribs.array+i; if (!load_vb_buffer(attrib, vb, program->attribs.array[i])) return false; } return true; }
static inline bool load_vb_buffers(struct gs_shader *shader, struct gs_vertex_buffer *vb) { size_t i; if (!gl_bind_vertex_array(vb->vao)) return false; for (i = 0; i < shader->attribs.num; i++) { struct shader_attrib *attrib = shader->attribs.array+i; if (!load_vb_buffer(shader, attrib, vb)) return false; } return true; }
bool load_vb_buffers(struct gs_program *program, struct gs_vertex_buffer *vb, struct gs_index_buffer *ib) { struct gs_shader *shader = program->vertex_shader; size_t i; if (!gl_bind_vertex_array(vb->vao)) return false; for (i = 0; i < shader->attribs.num; i++) { struct shader_attrib *attrib = shader->attribs.array+i; if (!load_vb_buffer(attrib, vb, program->attribs.array[i])) return false; } if (ib && !gl_bind_buffer(GL_ELEMENT_ARRAY_BUFFER, ib->buffer)) return false; return true; }