2012-05-21 5 views
1

저는 현재 두 개의 삼각형과 GL_TRIANGLE_STRIP을 사용하여 텍스처를 그리는 4 코너 폴리곤이 있습니다. 오른쪽면이 더 커야하고, 이것은 뒤죽박죽이다. 삼각형이 가운데에서 교차하는 곳에서 눈에 띄는 차이가 있습니다. 어떻게하면 이렇게 정리할 수 있습니까?OpenGL에서 직사각형 비뚤어 짐

나는 어떤 종류의 affine 변환이 필요하다고 생각합니다. 더 많은 삼각형으로 세분해야한다고 생각하지만, 확실하지 않습니다.

스크린 샷 : http://i.imgur.com/alYdG.png

예제 코드 : 변환과 그 효과를 얻을 수있는 경우

float x = rect.origin.x; 
float y = rect.origin.y; 
float w = x + rect.size.width; 
float h = y + rect.size.height; 
V2fT2f quad[4] = { 
    //x y 
    { x, y, 0, 1 },//bottom left 
    { w, y-0.2, 1, 1 },//bottom right 
    { x, h, 0, 0 },//top left 
    { w, h+0.2, 1, 0 },//top right 
}; 
glEnable(GL_TEXTURE_2D); 
glEnableClientState(GL_VERTEX_ARRAY); 
glBindTexture(GL_TEXTURE_2D,texID); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY);glErrorCheck(); 
glVertexPointer (2, GL_FLOAT, sizeof(V2fT2f), &quad[0].x); 
glTexCoordPointer(2, GL_FLOAT, sizeof(V2fT2f), &quad[0].s); 
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 
+0

일부 코드와 스크린 샷은 도움이 될 것입니다. 사용자가 도움을받지 않으면 더 쉽게 찾을 수 있습니다. – Ani

+0

덕분에 두 가지를 모두 추가했습니다 –

+0

효과처럼 커버 플로우를 얻으려고합니까? 그렇다면 투시 투영법을 설정 했습니까? – Ani

답변

0

- 당신이 설정 원근 투영 필요합니다. 반자, Y - centerX : : 예 - HalfHeight, 화 : 0, TV 시청 : 0 당신이 여기 정점 (이러한 너비와 높이의 사각형을 형성)

  1. X 것을 완료 한 후에

  2. X : - : Y + HalfHeight, 화 : centerX 반각, Y 0, TV 1
  3. X : Y + HalfHeight, 화 : centerX + 반각, Y 1, TV 1
  4. X : centerX + halfWidth, Y : y - HalfHeight, Tu : 1, TV : 0

glRotatef (각도, 0, 1, 0)로 묶습니다. - Y 축 주위로 각도로 회전합니다.

그리고 필요한 것을 제공해야합니다.

+0

당신은 glMatrixMode (GL_PROJECTION)를 의미합니다; 옳은? –

+0

원하는 행렬의 이름 만 설정합니다. gluPerspective (http://www.opengl.org/sdk/docs/man/xhtml/gluPerspective.xml) 같은 것을 사용하여 값을 설정하고 gluLookAt (http://www.opengl.org)를 사용하여 값을보아야합니다. /sdk/docs/man/xhtml/gluLookAt.xml) – Ani