답변:
당신은 항상 looong 버퍼 "vertex; texcoord"를 반복 할 수 있습니다. 그리고 당신이 말한 방법으로 색인을 사용하십시오. 그것은 아마도 당신이 알고있는 것과 가장 쉽고 유사합니다.
메모리를 절약하려면 깔끔한 솔루션이 있으며 단일 texcoord를 가진 버퍼에 하나의 스프라이트를 가지고 UVs 변환 매트릭스를 생성하고이를 셰이더에 보내고 texcoords와 함께 버텍스 셰이더를 곱하는 것입니다.
당신이 그것을 잘하지 않는다면 스스로 매트릭스를 만들 필요가 없습니다. 일반 GL 함수를 사용하고 glGetFloatv
함수가있는 행렬을 읽는 것만 가능 합니다. 이처럼 :
glGetFloatv (GL_MODELVIEW_MATRIX ,&g_TexCoordMat);
더 잘 설명하기 위해 이미지를 만들었습니다. glTranslate ang glScale은 UV 공간만으로 움직이는 것처럼 보일 수 있습니다.
셰이더에 매트릭스를 보내는 방법을 모른다면 코드를 공유 할 수 있습니다.
편집 : 사진 추가
(내가 사용한 스프라이트 시트 소스 : funorb.com )