I 정점 배열을 사용하여 사각형을 그립니다 시도하는 다음 코드가 :의 OpenGL 텍스처는 왜곡 된 좌표
목적은 멀리 코너 패턴을 사용하여 삼각형 스트립을 통해 간단한 사각형을 그릴 것입니다glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, &mNorms[ 0 ]);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, &mTexCrds[ 0 ]);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, 0, &mVtxs[ 0 ]);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
왼쪽, 오른쪽 근처, 오른쪽 근처, 오른쪽 근처. 변수 값은 다음과 같습니다.
/* far left near left far right near right */ mNorms { 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0 } mTexCrds { 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0 } mVtxs { -25.0, 0.0, -100.0, -25.0, 0.0, -50.0, 25.0, 0.0, -100.0, 25.0, 0.0, -50.0 }
내 텍스처는 모든 가장자리 주위에 얇은 파란색 테두리가있는 검은 타일입니다. 사각형이 위의 지침을 사용하여 그려진 때, 완전히 파란색 : 분명히
bad.jpg http://www.graemecentralstation.com/img/bad.jpg
, 위의 질감 주어진 내 2D 텍스처가 완전히 볼 수 있도록 기대하고 조정합니다.
제가
glBegin(GL_TRIANGLE_STRIP);
{
for(int i = 0; i < 4; ++i)
{
glNormal3fv(&mNorms[ i * 3 ]);
glTexCoord2fv(&mTexCrds[ i * 2 ]);
glVertex3fv(&mVtxs[ i * 3 ]);
}
}
glEnd();
는 ... 다음 직사각형 I 예상대로 가시적 전체 텍스처 맵 이미지로 그려진 ... 이런 동일한 어레이 데이터를 이용하여 수동으로 호출과 glDrawArrays()를 대체하는 경우 :
good.jpg http://www.graemecentralstation.com/img/good.jpg
glDrawArrays()가 내 질감을 너무 심하게 왜곡 왜 어떤 생각?
만약 당신이'glVertexPointer'를 셋업하는데 어려움을 겪고 있다면, 꼭 정점 버퍼 객체를 사용할 수 있습니다. 그것은 아마도 더 잘 수행 할 것입니다. –