Это заставило меня сходить с ума в течение последних нескольких дней.Картирование текстур в LWJGL
Я оживляющий spritesheet, и это на самом деле работает отлично на моем 96 пикселей 384px текстуры с этим кодом:
glBegin(GL_QUADS);
glTexCoord2f((frameCount*24.0f)/imgWidth, (row*24.0f)/imgHeight); glVertex3f(0+x, 0+y, -0.001f*(y+32));
glTexCoord2f((frameCount*24.0f)/imgWidth, ((row+1)*24.0f)/imgHeight); glVertex3f(0+x, 32+y, -0.001f*(y+32));
glTexCoord2f(((frameCount+1)*24.0f)/imgWidth, ((row+1)*24.0f)/imgHeight); glVertex3f(32+x, 32+y, -0.001f*(y+32));
glTexCoord2f(((frameCount+1)*24.0f)/imgWidth, (row*24.0f)/imgHeight); glVertex3f(32+x, 0+y, -0.001f*(y+32));
glEnd();
Проблема в том, однако, что, когда я загружаю в 32px 32px текстуры, это выглядит странно ! Я подозреваю, что число 24.0f должно отличаться в зависимости от размера текстуры, но я не могу понять, как это сделать.
Второй вопрос: как этот метод влияет на производительность, есть ли лучшие способы сделать это?
Фактически, я решил это с помощью: \t \t texture.bind(); \t \t \t \t glBegin (GL_QUADS); \t \t \t glTexCoord2f (32.0f * frameCount/imgWidth, 32.0f * row/imgHeight); glVertex3f (0 + x, 0 + y, -0.001f * (y + 32)); \t \t \t glTexCoord2f (32.0f * frameCount/imgWidth, 32.0f * (row + 1)/imgHeight); glVertex3f (0 + x, 32 + y, -0.001f * (y + 32)); \t \t \t glTexCoord2f (32.0f * (frameCount + 1)/imgWidth, 32.0f * (row + 1)/imgHeight); glVertex3f (32 + x, 32 + y, -0,001f * (y + 32)); \t \t \t glTexCoord2f (32.0f * (frameCount + 1)/imgWidth, 32.0f * row/imgHeight); glVertex3f (32 + x, 0 + y, -0.001f * (y + 32)); \t \t glEnd(); Но все еще хотите знать, эффективен ли это? – Deenis