Координаты glTexCoord2f для местности GL_TRIANGLE_STRIP - PullRequest
0 голосов
/ 01 февраля 2020

как я могу применить текстуру к моей местности? мои glTexCoord2 не правы Как мне их рассчитать? что я делаю не так?

какие индексы я должен использовать?

Может кто-нибудь описать метод, используемый для вычисления координат текстуры для ландшафта

Может ли кто-нибудь объяснить мне это? ?

for (int z = 0; z < _terrain->length() - 1; z++) {

    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, _textureId);

    //Makes OpenGL draw a triangle at every three consecutive vertices
    glBegin(GL_TRIANGLE_STRIP);

    for (int x = 0; x < _terrain->width(); x++) {

        //  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_REPEAT);
        //  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_REPEAT);
        //  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
        //  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_LINEAR);   

        //glColor3f(1.0f, 1.0f, 1.0f);

        Vec3f normal = _terrain->getNormal(x, z);
        glNormal3f(normal[0], normal[1], normal[2]);

        glTexCoord2f((z + 1) / sizethis, (x + 1) / sizethis);
        glVertex3f(x, _terrain->getHeight(x, z), z);

        normal = _terrain->getNormal(x, z + 1);
        glNormal3f(normal[0], normal[1], normal[2]);

        glTexCoord2f(x / (_terrain->width()), (z+1) / _terrain->length());
        glVertex3f(x, _terrain->getHeight(x, z + 1), z + 1);    
    }
    glEnd();
    glFlush();
    glDisable(GL_TEXTURE_2D);
}
glutSwapBuffers();
...