OpenGL ES 1.0으로 게임을 시작했고 몇 가지 (초보자) 문제가 발생했습니다. 삼각형으로 설명 된 큐브에 정사각형 텍스처를 매핑하려고했습니다. 이제 사각형 텍스쳐를 삼각형으로 매핑하기
// Turn necessary features on
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_SRC_COLOR);
glEnable(GL_CULL_FACE);
//glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
// Bind the number of textures we need, in this case one.
glGenTextures(1, &texture[0]);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
//Drawing code
static GLfloat rot = 0.0;
static const Vertex3D vertices[] = {
-1.0f,-1.0f,-1.0f, //0 00
1.0f,-1.0f,-1.0f, //1 10
1.0f, 1.0f,-1.0f, //2 11
-1.0f, 1.0f,-1.0f, //3 01
};
static const int vertexCnt = 3 * 2;
static const GLubyte cube[] = {
3,0,2,
1,2,0,
};
static const GLfloat texCoords[] = {
0,1,
0,0,
1,1,
1,0,
1,1,
0,0,
};
glClearColor(0.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -3.0f);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glEnableClientState(GL_VERTEX_ARRAY);
//glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_COLOR_MATERIAL);
glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
glVertexPointer(3, GL_FLOAT, 0, vertices);
//glColorPointer(4, GL_FLOAT, 0, colors);
glNormalPointer(GL_FLOAT, 0, normals);
glDrawElements(GL_TRIANGLES, vertexCnt, GL_UNSIGNED_BYTE, cube);
glDisableClientState(GL_VERTEX_ARRAY);
//glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
, 엄청나게 많은 시도 후, 난 그냥 이 삼각형 평방 텍스처를 매핑하는 경우에 대해 엄지 손가락의 몇 가지 규칙이 있나요 ... 그것은 다른 측면 작동 얻을 수 없다?
편집 : 매핑을 어떻게 수행해야하는지 생각합니다. 그러나이 예 (한 얼굴)에서는 작동하지 않습니다. 누군가가 코드를 올바르게 작성했는지 확인할 수 있습니까? (나머지 코드는 작동한다고 가정)
많은 감사
는 는
: 여기
큐브를 표시하도록 업데이트 코드입니다 (I 장애인 얼굴이 확실하게 컬링 있도록 약간의 감기에 문제가있을 수 있습니다) 동일한 정점 데이터를 재사용하면서 큐브를 만듭니다. 큐브를 6 개의 개별 쿼드 = 8 개의 정점으로 재 작업합니다. –'normals' 배열이 잘못되었다고 생각합니다. 정상적인 포인터의 내용은 무엇입니까? 얼굴마다 법선을 바꾸고 있습니까? –
노멀은 다소 잘못되었지만 텍스처 맵핑에 영향을 준다는 것을 몰랐습니다 ... 나는 조명에만 영향을 미쳤다고 생각합니다 ... 체크 아웃 할 것입니다.감사합니다 – sinek