#opengl #2d #lwjgl
#opengl #2d #lwjgl
Вопрос:
Я уверен, что это относительно простой вопрос, это всего лишь одна вещь, с которой у меня всегда были проблемы.
У меня есть фон размером 512×512, который я хотел бы выложить плиткой «бесконечно». Я искал вокруг и, похоже, не могу найти много, поэтому я решил, что приду сюда. В любом случае, вот оно:
фон http://dl.dropbox.com/u/5003139/hud/stars_far.png
Итак, вот оно. У меня есть спрайт корабля, который может перемещаться в любом месте на 2D-плоскости, и это игра сверху вниз. Как бы я отрисовал этот фон так, чтобы он покрывал каждый пиксель окна произвольного размера?
Ответ №1:
В режиме сжатия / переноса текстуры GL_REPEAT координаты текстуры за пределами диапазона [0,1] будут обтекаться, повторяя текстуру. Таким образом, вы можете нарисовать квадрат, заполняющий экран, но использовать более крупные координаты текстуры. Например, использование координат текстуры (от 0,0) до (10,10) приведет к повторению текстуры 10 раз в каждом направлении. Режим повторения включен для текущей связанной 2D-текстуры с
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
Комментарии:
1. Я забыл упомянуть, что «камера» будет следовать за кораблем, поэтому фон будет двигаться в противоположном направлении.
2. Просто нарисуйте фон с его собственной проекцией / modelview и отрегулируйте координаты текстуры в соответствии с движением кораблей.