큐브를 렌더링하고 모든면에 단일 텍스처를 적용하려고했습니다. 뿐만 아니라 얼굴의 정점 인덱스를 넘겨서 작은 정점을 사용할 수도 있습니다. 예 :GLES20 텍스처 데이터가 꼭지점 인덱스와 연결되지 않는 이유는 무엇입니까?
정점 :
static final float FACE_VERTEX[] = {
// front
0.0f, 1.0f, 1.0f, //0
0.0f, 0.0f, 1.0f, //1
1.0f, 0.0f, 1.0f, //2
1.0f, 1.0f, 1.0f, //3
//back
1.0f, 1.0f, 0.0f, //4 - 3
1.0f, 0.0f, 0.0f, //5 - 2
0.0f, 0.0f, 0.0f, //6 - 1
0.0f, 1.0f, 0.0f, //7 - 0
};
인덱스 :
static final int FACE_INDEX[] = {
//front
0,1,2, 0,2,3,
//back
4,5,6, 4,6,7,
//left
7,6,1, 7,1,0,
//right
3,2,5, 3,5,4,
//top
4,7,0, 4,0,3,
//bottom
1,6,5, 1,5,2
};
텍스처 맵핑 데이터 :
final int textureCoordinateData[] =
{
// Front face
0,0, 0,1, 1,1, 1,0,
//back
0,0, 0,1, 1,1, 1,0,
//left
0,0, 0,1, 1,1, 1,0,
//right
0,0, 0,1, 1,1, 1,0,
//top
0,0, 0,1, 1,1, 1,0,
//bottom
0,0, 0,1, 1,1, 1,0,
//top
0,0, 0,1, 1,1, 1,0,
//bottom
0,0, 0,1, 1,1, 1,0,
};
질감이 상하 제외 큐브의 모든 측면에 렌더링 . 표면의 픽셀의 첫 번째 행이 (스크린 샷 참조) 전체의 표 리면을 따라 표현된다 : I은 GPU에 정점/색인/텍스쳐 데이터를 저장하는 VBOs 사용하고
텍스쳐 데이터 (큐브 모델 다소 성가신) 인덱스에 의해 계산되지 않고 통과 정점 데이터에 매핑되어야하기 때문에, 그리고
glDrawElements(GL_TRIANGLES, indexLength, GL_UNSIGNED_INT, 0);
으로 렌더링 그러나이 문제가된다.
내 질문은 : - 가능하면 낮은 꼭지점 데이터를 유지하고 텍스처를 인덱스 데이터에 매핑하는 방법이 있습니까? - 질감 맵핑 문제를 해결하기 위해 36 개의 꼭지점을 만들었지 만 (반복되는 경우도 있지만) 큐브 렌더링에 올바른 인덱스를 만들었지 만 glDrawArrays
을 사용하는 것보다 여전히 빠릅니까? 또는 glDrawArrays
으로 가서 어쨌든 색인 데이터를 휴지통으로 보내야합니까?
관련 질문 :
OpenGL ES - texture map all faces of an 8 vertex cube?
당신은 대답의 첫 번째 코멘트를 읽는다면 : 당신은 당신이 24를 사용할 필요가 무슨 뜻 이죠
을 정점? 을 복제해야한다면 인덱스 버퍼를 사용하는 지점은 무엇입니까? 그렇다면 은 GPU에 반복 데이터를 보내고 있습니까?