this tutorial에서 저자는 6 개의면 (6 * 4 정점)을 정의한 다음 각면의 삼각형에 대해 webgl에게 말함으로써 정육면체를 표시합니다.큐브에있는 WebGL 삼각형
이것은 낭비가 아닙니까? 단지 8 개의 꼭지점을 정의하고 webgl에게 삼각형을 연결하는 방법을 알려주는 것이 낫지 않습니까? 여러 정점에서 공유되는 색상이 문제가됩니까?
내 관심사를 분명히하기 위해 : 저자가 인덱스 배열을 가진 삼각형을 정의하면 왜 많은 꼭지점이 필요합니까? 그는 정점 배열에 8 개의 꼭지점이있는 모든 삼각형을 지정할 수 있습니다.
메모리가 저렴하지만 사실이지만 버텍스 수를 늘리면 선형 처리에 필요한 시간이 길어집니다 (또는 GPU가 그 일을하는 방식을 모르겠습니다). 셰이딩을 위해 픽셀 쉐이더를 사용한다면 8 개의 꼭지점을 지정하는 것이 더 낫습니다. 맞습니까? – oOo
GPU는 정점 별 데이터 읽기 버텍스를 실행합니다. 즉, 버텍스 쉐이더는 각 속성 번들마다 하나씩 실행됩니다. 그것을 비정형 화하려면 위치 테이블이 필요합니다. 그러면 WebGL에서 각 꼭지점은 "나는 빨간색으로 위치 # 1입니다"라고 말해야합니다 (예 :). 이것은 비선형 메모리 읽기 (먼저 위치 색인을 포함한 다른 속성을 읽은 다음 위치를 읽음)을 필요로하며, 우리가 말하는 저수준 그래픽 하드웨어에서 효율적으로 구현하기가 더 어려울 것입니다. –