Как добавить одну текстуру на местности в OpenGL? - PullRequest
0 голосов
/ 14 ноября 2011

Я новичок в 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();
}

1 Ответ

4 голосов
/ 14 ноября 2011

Проблема в том, что вы в настоящее время накладываете текстуру на каждый квадрат.Вы должны изменить свой glTexCoord2f при прохождении по местности.Просто разделите координаты x и z на ширину и высоту вашего ландшафта в цикле for.

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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...