在过去的几天里,这一直让我发疯。
我正在为 spritesheet 设置动画,它实际上在我的 96px 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 应该根据纹理大小而有所不同,但我不知道如何。
第二个问题:这种方法对性能有什么影响,有没有更好的方法呢?