我有以下代碼來嘗試使用頂點數組來繪製一個矩形: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紋理是完全可見。
如果我使用這樣相同的數組數據的手動調用替換(4,8)...
glBegin(GL_TRIANGLE_STRIP);
{
for(int i = 0; i < 4; ++i)
{
glNormal3fv(&mNorms[ i * 3 ]);
glTexCoord2fv(&mTexCrds[ i * 2 ]);
glVertex3fv(&mVtxs[ i * 3 ]);
}
}
glEnd();
...然後該矩形被吸入與全紋理地圖圖像作爲可見我期望:
good.jpg http://www.graemecentralstation.com/img/good.jpg
任何想法,爲什麼(4,8)會扭曲我的質地如此糟糕?
IMO如果你正在經歷設置'glVertexPointer'等所有麻煩,你可能只需要使用頂點緩衝對象。它可能會表現更好。 – 2014-10-20 18:08:09