Индексный буфер на буфере вершин с несколькими атрибутами - OpenGL - PullRequest
2 голосов
/ 08 июня 2019

Контекст:

  • API OpenGl C> = 4,1

Вопрос:

Вот это VBO (буфер вершин), где каждая вершина состоит из позиции (3 GLfloat) и цвета (3 GLfloat) .

Здесьявляется представлением памяти VBO .

. В следующем представлении p1 обозначает положение вершины 1 , c1 обозначает цвет вершины 1 , p2 обозначает положение вершины 2 , c2 обозначает цвет вершины2 и т. Д.

VBO: [p1_x, p1_y, p1_z, c1_x, c1_y, c1_z, p2_x, p2_y, p2_z, c2_x, c2_y, c2_z, ...]
      |                                   |
      |                                   |
      |                                   |
      start of vertex 1                    start of vertex 2

Этот VBO связан с VAO .Атрибуты позиции и цвета объявлены следующим образом:

// Enable two attributes position and color

// Enable position attribute
id_position = glGetAttribLocation(id_program, "position");
glEnableVertexAttribArray(id_position);
glVertexAttribPointer(id_position ,
        3,
        GL_FLOAT,
        GL_FALSE,
        sizeof(GLfloat) * 3 + sizeof(GLfloat) * 3,
        (uint8_t *)NULL);

// Enable color attribute
id_color = glGetAttribLocation(id_program, "color");
glVertexAttribPointer(id_color);
glVertexAttribPointer(id_color ,
        3,
        GL_FLOAT,
        GL_FALSE,
        sizeof(GLfloat) * 3 + sizeof(GLfloat) * 3,
        (uint8_t *)NULL + (sizeof(t_vec3)));

Теперь возможно использовать индексный буфер IBO с этим VBO для того, чтобы каждыйиндекс относится к началу каждой вершины?

Позволяет ли использование нескольких атрибутов в одном VBO индексировать таким образом?

VBO: [p1_x, p1_y, p1_z, c1_x, c1_y, c1_z, p2_x, p2_y, p2_z, c2_x, c2_y, c2_z, ...]
      |                                   |
      |                                   |
      |                                   |
      start of vertex 1                   start of vertex 2

IBO: [0, 1, 3, 1, 0, 4, ...]

Я нашел пример IBO только с вершиной с одним компонентом позиции здесь .

Эта ссылка , кажется, связана с проблемой, но мне трудно понятьэто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...