2014-01-28 55 views
2

我畫我的觀點類似:貼花紋理使用glTextCoordPointer

TAB_PAS = 2; 

glVertexPointer(TAB_PAS,GL_FLOAT,0,test[0].send_terrain()); 
glDrawElements(GL_LINES, indice_degra_de.size(), GL_UNSIGNED_INT, indice_degra_de.constData()); 
glVertexPointer(TAB_PAS,GL_FLOAT,0,test[1].send_terrain()); 
glDrawElements(GL_LINES, indice_degra.size(), GL_UNSIGNED_INT, indice_degra.constData()); 
glVertexPointer(TAB_PAS,GL_FLOAT,0,test[2].send_terrain()); 
glDrawElements(GL_LINES, indice_degra_de.size(), GL_UNSIGNED_INT, indice_degra_de.constData()); 
glVertexPointer(TAB_PAS,GL_FLOAT,0,test[3].send_terrain()); 

它吸引了大地形。

所以現在,我想爲例子貼上地板紋理。我看到一個功能glTexCoordPointer,但我不知道如何使用它:

glTexCoordPointer(2, GL_FLOAT, 0, test[0].send_terrain()); 
// Something like that ? 

我已經上傳了我的picture.tga,所以現在的問題是貼花它。

回答

0

你以同樣的方式使用glTextCoordPointerglVertexPointer

glVertexPointer(TAB_PAS, GL_FLOAT, 0, test[0].send_terrain()); 
glTexCoordPointer(2, GL_FLOAT, 0, test[0].send_texCoords()); 
glDrawElements(GL_LINES, indice_degra_de.size(), GL_UNSIGNED_INT, indice_degra_de.constData()); 

你需要指定另一個數組,其中每對紋理座標對應於一個頂點在地形數據的紋理座標。

要讓OpenGL的實際使用您的紋理座標:

glEnableClientState(GL_TEXTURE_COORD_ARRAY); // Before calling DrawElements 

當然,你必須有質感的約束並啓用。完整的例子,假設你生成紋理座標,讓你的.TGA質地上傳到OpenGL的:

glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, textureHandle); 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 

glVertexPointer(TAB_PAS,GL_FLOAT,0,test[0].send_terrain()); 
glTexCoordPointer(2, GL_FLOAT, 0, text[0].send_texCoord()); 
glDrawElements(GL_LINES, indice_degra_de.size(), GL_UNSIGNED_INT, indice_degra_de.constData()); 

glVertexPointer(TAB_PAS,GL_FLOAT,0,test[1].send_terrain()); 
glTexCoordPointer(2, GL_FLOAT, 0, text[1].send_texCoord()); 
glDrawElements(GL_LINES, indice_degra.size(), GL_UNSIGNED_INT, indice_degra.constData()); 

glVertexPointer(TAB_PAS,GL_FLOAT,0,test[2].send_terrain()); 
glTexCoordPointer(2, GL_FLOAT, 0, text[2].send_texCoord()); 
glDrawElements(GL_LINES, indice_degra_de.size(), GL_UNSIGNED_INT, indice_degra_de.constData()); 

glVertexPointer(TAB_PAS,GL_FLOAT,0,test[3].send_terrain()); 
glTexCoordPointer(2, GL_FLOAT, 0, text[3].send_texCoord()); 
// and so on... 

我希望這是你所需要的

+0

謝謝你。你如何計算Tex Coord? – user3243742

+0

這裏是關於紋理的簡短教程。它以一個紋理座標爲例結束:http://www.gamedev.net/page/resources/_/technical/opengl/opengl-texture-mapping-an-introduction-r947 – user1781290