Координаты текстуры не работают? - PullRequest
1 голос
/ 06 августа 2011

Серьезно, я злюсь на этот код, потому что не работает:

switch(particle) {
case 0:
    glBegin(GL_TRIANGLE_STRIP);         // STONE
        glNormal3f(0.0f, 0.0f, 1.0f);
        glTexCoord2d(1, 1); glVertex3f(x+size, y+size, 0.0f); // Top Right
        glTexCoord2d(0.5, 1); glVertex3f(x-size, y+size, 0.0f); // Top Left
        glTexCoord2d(1, 0.5); glVertex3f(x+size, y-size, 0.0f); // Bottom Right
        glTexCoord2d(0.5, 0.5); glVertex3f(x-size, y-size, 0.0f); // Bottom Left
    glEnd();
    break;
case 1:
    glBegin(GL_TRIANGLE_STRIP);         // EARTH
        glNormal3f(0.0f, 0.0f, 1.0f);
        glTexCoord2d(0.5, 0.5); glVertex3f(x+size, y+size, 0.0f); // Top Right
        glTexCoord2d(0, 0.5); glVertex3f(x-size, y+size, 0.0f); // Top Left
        glTexCoord2d(0.5, 0); glVertex3f(x+size, y-size, 0.0f); // Bottom Right
        glTexCoord2d(0, 0); glVertex3f(x-size, y-size, 0.0f); // Bottom Left
    glEnd();
    break;
}

Случай 0 работает нормально, но случай 1 - нет, и я не знаю почему ..Это изображение (32x32 с двумя 16x16 субтекстурами):

enter image description here

1 Ответ

4 голосов
/ 06 августа 2011

Дайте этому случаю 0, видимо, работает нормально, ваши координаты текстуры для случая 1 неверны. Они должны быть:

glBegin(GL_TRIANGLE_STRIP);         // EARTH
    glNormal3f(0.0f, 0.0f, 1.0f);
    glTexCoord2d(0.5, 1.0); glVertex3f(x+size, y+size, 0.0f); // Top Right
    glTexCoord2d(0, 1.0); glVertex3f(x-size, y+size, 0.0f); // Top Left
    glTexCoord2d(0.5, 0.5); glVertex3f(x+size, y-size, 0.0f); // Bottom Right
    glTexCoord2d(0, 0.5); glVertex3f(x-size, y-size, 0.0f); // Bottom Left
glEnd();
...