Я использую OpenGL для рисования текстур в моей игре.
glClear(GL_COLOR_BUFFER_BIT);
float w = 128;
float h = 128;
w *= scale;
h *= scale;
GLfloat vertices[] = {
w, 0,
w, h,
0, 0,
0, h
};
float u1 = 0;
float u2 = 1;
float v1 = 0;
float v2 = 1;
GLfloat texCoords[] = {
u2, v1,
u2, v2,
u1, v1,
u1, v2
};
glVertexPointer(2, GL_FLOAT, 0, vertices);
glEnableClientState(GL_VERTEX_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, texCoords);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
Это простой пример, чтобы объяснить мою проблему. Я изменяю переменную масштаба, которая влияет только на вершины треугольника и не должна изменять координаты текстуры. Когда масштаб равен 1, у меня есть это изображение:
один http://dl.dropbox.com/u/21467/opengl/1.png
Когда я изменяю масштаб на 0,99, у меня появляется эта картинка:
два http://dl.dropbox.com/u/21467/opengl/3.png
Если вы посмотрите внимательно, вы заметите небольшую полоску на вершине текстуры. Почему это там и как я могу избежать этого?
В моей реальной игре я рисую плитки, и если я меняю масштаб, у моих плиток появляются эти полосы, и в результате я получаю эту неприятную сетку полос в своей игре. Кто-нибудь знает, что не так?