我想繪製一個矩形並應用紋理。該代碼從一本書我讀的是抄襲,我只是傳遞給C++(從Java),那就是:無法正確繪製使用glDrawElements
void draw(){
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(2, GL_FLOAT, 4, vertices.data());//vertexSize is 4
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 2, vertices.data() + 2);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, indices.data());
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
}
頂點是size 16
一個std::vector
和以下值: [-0.25,-0.25,0.0,0.25,0.25,-0.25,0.25,0.25,0.25,0.25,0.25,0.0,-0.25,0.25,0.0,0.0]
每4個浮點指定vertex coord
和texture coord
, 以及指數是size 6
具有以下值的std::vector
: [0,1,2,2,3,0]
指定頂點陣列中的兩個三角形(具有紋理)。 這兩個數組總是在調用draw之前設置的。
問題是呈現的對象是不正確的,而不是一個矩形我有一個梯形旋轉。載體似乎是正確的,因爲我是新來的OpenGL,我不知道這個代碼出了什麼問題。
感謝您的關注。
--- EDITED --- OpenGL的矩陣設定權之前進入應用循環:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClearColor(0.0, 1.0, 0.0, 1.0);
glEnable(GL_TEXTURE_2D);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
/*application loop, no more matrices use*/
可能是因爲你的矩陣?我們能看到你在做什麼嗎? – fordcars