我是 OpenGL 的新手。是否可以将单个图像包裹在地形上?
下面的代码会生成图像 block ,但我想在整个地形上添加单个 block 。
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
}
}
关于c++ - 如何在 OpenGL 中的地形上添加单个纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8116677/