var rectangleVertices = [
//x y
-0.5, -0.5, //0번 vertex
0.5, -0.5, //1번 vertex
0.5, 0.5, //2번 vertex
-0.5, 0.5, //3번 vertex
//r g b a
1.0, 0.0, 0.0, 1.0, //0번 vertex
0.0, 1.0, 0.0, 1.0, //1번 vertex
0.0, 0.0, 1.0, 1.0, //2번 vertex
0.8, 0.2, 0.3, 1.0, //3번 vertex
];
불가능하다
주어진 API는 [x, y, r, g, b, a] 와 같이 한 vertex에 대한 정보가 연속적으로 나오는 것을 가정하여 몇개의 종류를 사용할건지만 넣으면 stride, offset을 계산해 렌더링하도록 작성되어있다.
하지만, 주어진 예시와 같이 좌표와 색상 정보가 연속적으로 나와있지 않는 경우에는 해당 API로는 그릴 수 없게된다.
만약 주어진 예시와 같이 데이터를 주고싶은 경우 API는 다음과 같이 수정해야 한다.
gl.vertexAttribPointer()의 stride로 0을 전달해도 기존처럼 사각형/삼각형이 잘 그려집니다. 이상하죠? 다음 정점 데이터를 읽어오는데 바이트를 0만큼 이동해서 읽어오라는건데 그러면 같은 값만을 계속 읽어올텐데 실제로는 그렇지 않습니다. 그 이유에 대해 vertexAttribPointer에 대한 레퍼런스 문서를 읽어 보세요.Stride = 0 일 경우 한 정점에 대한 속성들이 연속적으로 나열되어있을 것이라 생각해 이후 과정을 처리한다.
이러한 가정을 기반으로, size, type을 이용해 stride를 자동 계산하여 건너뛰는 것이다.
정말 도움이 됐어요!!