[英]How to add a single texture on a terrain in OpenGL?
是OpenGL的新手。 是否可以在地形上包裝單個圖像?
以下代碼將生成圖像圖塊,但我想在整個地形上添加單個圖塊。
glBindTexture(GL_TEXTURE_2D, land);
for (int z = 0; z < MAP_Z-1; z++)
{
glBegin(GL_TRIANGLE_STRIP);
for (int x = 0; x < MAP_X-1; x++)
{
glTexCoord2f(0.0f, 0.0f);
glVertex3f(terrain[x][z][0], terrain[x][z][1], terrain[x][z][2]);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(terrain[x+1][z][0], terrain[x+1][z][1], terrain[x+1][z][2]);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(terrain[x][z+1][0], terrain[x][z+1][1], terrain[x][z+1][2]);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(terrain[x+1][z+1][0], terrain[x+1][z+1][1], terrain[x+1][z+1][2]);
}
glEnd();
}
問題是您當前正在將紋理映射到每個正方形。 當您越過地形時,需要更改glTexCoord2f。 只需在for循環中將x和z坐標除以地形的寬度和高度即可。
for (int z = 0; z < MAP_Z-1; z++)
{
glBegin(GL_TRIANGLE_STRIP);
for (int x = 0; x < MAP_X-1; x++)
{
glTexCoord2f((float)x/(float)MAP_X, (float)z/(float)MAP_Z);
...
... // Other code with (x+1) and (z+1) in the glTexCoord2f
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.