Я смотрю на пример от Apple, как использовать массивы вершин:
typedef struct _vertexStruct
{
GLfloat position[2];
GLubyte color[4];
} vertexStruct;
enum {
ATTRIB_POSITION,
ATTRIB_COLOR,
NUM_ATTRIBUTES };
void DrawModel()
{
const vertexStruct vertices[] = {...};
const GLubyte indices[] = {...};
glVertexAttribPointer(ATTRIB_POSITION, 2, GL_FLOAT, GL_FALSE,
sizeof(vertexStruct), &vertices[0].position);
glEnableVertexAttribArray(ATTRIB_POSITION);
glVertexAttribPointer(ATTRIB_COLOR, 4, GL_UNSIGNED_BYTE, GL_TRUE,
sizeof(vertexStruct), &vertices[0].color);
glEnableVertexAttribArray(ATTRIB_COLOR);
glDrawElements(GL_TRIANGLE_STRIP, sizeof(indices)/sizeof(GLubyte),
GL_UNSIGNED_BYTE, indices);
}
( источник )
Как OpenGL узнает, какой цвета какая вершина?ATTRIB_POSITION
и ATTRIB_COLOR
определяются пользователем, поэтому opengl не должен знать, что это значит.В частности, я стараюсь использовать постоянные цвета и массивы вершин / текстур.Если я изменю ATTRIB_COLOR
на ATTRIB_TEXTURE
OpenGL ничего не заметит, как я могу это сделать?