2013-04-27 2 views
0

사각형의 다른 크기에 좌표질감 I 텍스처처럼 좌표 매핑

static float texCoord[] = { 
0, 1, 
1, 1, 
1, 0, 
0, 0 
}; 

하고 그려서 :

void Rectangle::Draw() 
{ 
const float vertices[] = { 
    x, y, 
    x + width, y, 
    x, y - height, 
    x + width, y - height 
}; 

glEnableClientState(GL_VERTEX_ARRAY); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 

glColor3ub(255, 255, 255); 

glVertexPointer(2, GL_FLOAT, 0, vertices); 
glTexCoordPointer(2, GL_FLOAT, 2, texCoord); 

if  (IsTypeHorizontal()) glBindTexture(GL_TEXTURE_2D, texture_H); 
else /* (IsTypeVertical())*/ glBindTexture(GL_TEXTURE_2D, texture_V); 

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

glDisableClientState(GL_VERTEX_ARRAY); 
glDisableClientState(GL_TEXTURE_COORD_ARRAY); 

} 

질감 수직 (높이> 폭)에 그려진 (좋지만 수평 인 높이가 < 인 경우) 텍스처가 거꾸로 표시됩니다. texCoord_HtexCoord_V으로 텍스처 좌표를 분리해도 그려지는 이미지는 여전히 반전됩니까?

알아야 할 사항은 무엇입니까? 여기 내 코드에서 문제는 무엇입니까?

추신. 나는 토양을 사용하여 OpenGL을에 질감을 업로드

답변

0

텍스처 좌표를 변경하고 바꾼 여러 번 후에, 나는 내 시간을 낭비했다는 것을 깨달았다. 진짜 문제는 '버그가 발생합니다 (/ C는 stride이 승)가 0

0

시도 :

static float texCoord[] = { 
0, 1, 
1, 1, 
0, 0, 
1, 0 
}; 
+0

내가'GL_TRIANGLE_STRIP''GL_QUADS' – mr5

+0

가 확인되지를 사용하여 쿼드을 그릴 수 있어야 여기

glTexCoordPointer(2, GL_FLOAT, 2, texCoord); 

3 매개 변수입니다 나는 texcoord와 포지션이 일치하지 않는다는 것을 알아 차렸다. 그 경우 두 개의 마지막 코디를 바꾼다. –

+0

무엇이'coords'입니까? 나는 그것이 그곳의 문제가 아니라고 생각한다. 'texcoords'와 'vertices'는 같은 점을 사용합니다 (즉 'Z'와 같습니다). – mr5

0

대부분의 OpenGL을 초보자가 투영 변환과 뷰포트 매핑 매개 변수의 일반적인 세트와 OpenGL을 이미지 출처가있는 것으로 간주하는, 사실에 의해 혼란 얻을 왼쪽 아래쪽과 오른쪽 및 위쪽으로 증가하는 좌표. 이것은 원점이 왼쪽 상단에 있고 수직 치수가 아래쪽으로 증가한다고 생각하는 대부분의 컴퓨터 그래픽 시스템과는 대조적입니다.

아마 당신 문제입니다.