У меня есть несколько вопросов о создании графики для игры.
Например. Я хочу создать мотоцикл. (1 пиксель = 1 сантиметр) Так что мой мотоцикл будет иметь ширину 200 и высоту 150. (200x150) Но libgdx позволяет загружать только размеры со степенью 2 ?! (2,4,8,16, ...)
Сначала я думал об этом. Я создам свой велосипед с размером (200x150) и сохраню его в формате png. Затем я открою его снова (например, с помощью gimp) и изменим размер изображения до размера, который использует значения со степенью 2 (128x128). Я загрузлю это как текстуру в программе и установлю ширину как 200 и высоту как 150.
Но не будет ли это проблемой? Потому что я потеряю некоторую информацию о пикселях при первом разговоре.?! Не так ли?
Ответы:
Причина, по которой вы ограничены степенями двух размеров, связана с тем, как работает видеопамять. Обратите внимание, что обычно вы должны сделать изображение следующей по величине степенью двойки (т.е. 512x256), а затем просто использовать часть этого изображения для своей графики. Вы бы установили свои UV-координаты, чтобы использовать только часть изображения для любых треугольников, которые вы визуализируете.
Если вы беспокоитесь об использовании памяти, вы также можете использовать часть оставшегося пространства на разных объектах и UV-отображение этих объектов на эту часть текстуры. Создание такой текстуры также называется «атлас».
источник
Вы должны использовать координаты текстуры вместо изменения размера, например, рисовать только часть всей текстуры. Я не знаю, как это работает в libgdx, но этот подход распространен. Другой подход заключается в использовании текстурного атласа, который у вас есть в памяти, например, 1024x1024, а затем, когда вы загружаете свое изображение, вы загружаете его в прямоугольник атласа.
источник
Вы можете преобразовать размер вашего изображения немного больше или меньше в зависимости от размера. Я использовал эту ссылку - http://www.garyshood.com/imageconvert/ Вы можете использовать размер, который будет полностью делиться на 2. Например, если размер вашего изображения составляет 200, то 200/2 = 100; 100 / 2 = 50; 50/2 = 25, поэтому здесь 25 не делится на 2. Следовательно, 200 не является подходящим размером. Вы можете использовать 1024, 512, 256, 128 и т. Д. И затем вы можете использовать части этого изображения в вашей графике. Другой альтернативой было бы объединить все ваши текстуры в атласе текстур с помощью графического интерфейса libgdx Texture Packer и затем использовать текстуру из этого атласа.
источник