关于glVertexAttribPointer的用法

时间:2016-11-04 06:56:53

标签: opengl-es-2.0

GLfloat m_tex[3][4][2] = {
{ {{1.0, 2.0}, {2.0, 3.0}}, {{0.0, -3.0}, {9.0, 11.0}}, {{23.0, 12.0}, {43.0, 22.0}}, {{15.0, 4.0}, {3.0, 12.0}} },
{ {{13.0, 4.0}, {56.0, 3.0}}, {{5.0, 9.0}, {3.0, 5.0}}, {{3.0, 1.0}, {4.0, 9.0}}, {{5.0, 4.0}, {7.0, 12.0}} },
{ {{3.0, 9.0}, {6.0, 13.0}}, {{8.0, 19.0}, {13.0, 6.0}}, {{3.0, 3.0}, {9.0, 6.0}}, {{35.0, 7.0}, {13.0, 12.0}} }
};

glVertexAttribPointer(Yloc, 2, GL_FLOAT, 0, 0, m_tex[0]); 
glVertexAttribPointer(Uloc, 2, GL_FLOAT, 0, 0, m_tex[1]);
glVertexAttribPointer(Vloc, 2, GL_FLOAT, 0, 0, m_tex[2]);

我知道glVertexAttribPointer的含义。它将2个浮点数中m_tex[0]的值设置为顶点Yloc,但m_tex[0]包括:

{{1.0, 2.0}, {2.0, 3.0}}, {{0.0, -3.0}, {9.0, 11.0}}, {{23.0, 12.0}, {43.0, 22.0}}, {{15.0, 4.0}, {3.0, 12.0}}

那么前两个呢? {1.0,2.0}

我不确定。

1 个答案:

答案 0 :(得分:1)

,每次迭代需要两个数字

  +-----------------------------------------------------------+
  | glVertexAttribPointer(Yloc, 2, GL_FLOAT, 0, 0, m_tex[0]); |
  +-----------------------------------------------------------+
                                |                     |
   take 2 floats each time     <+   from this set   <-+
   [1.0,2.0]

如果将2参数更改为3,则将迭代组件[x,y,z]

  +-----------------------------------------------------------+
  | glVertexAttribPointer(Yloc, 3, GL_FLOAT, 0, 0, m_tex[0]); |
  +-----------------------------------------------------------+
                                |                     |
   take 3 floats each time     <+   from this set   <-+
   [1.0,2.0,2.0]