Размер изображения для текстуры OpenGL ES - PullRequest
2 голосов
/ 23 апреля 2011

Я пока не очень разбираюсь в OpenGL ES. Я только учусь рисовать треугольники и так. Мне еще предстоит узнать о текстуре.

Я слышал, что в некоторых устройствах требуется изображение шириной или высотой, равным степени 2, например: 2, 4, 8, 16, 32 и т. Д. почему это? и что мне делать, если у меня есть изображение такого размера, скажем, 53 x 76?

Мне нужно это знать, потому что именно это удерживало меня от перехода с canvas на OpenGL ES. спасибо:)

Ответы [ 2 ]

3 голосов
/ 23 апреля 2011

Текстура, имеющая степень 2 значительно упрощает аппаратное обеспечение текстурирования и оставляет место для многих оптимизаций, чтобы сделать его быстрее. Если у вас есть текстура не-степени-2, у вас есть два варианта:

1) Заполните «дополнительное» пространство всем, что вы хотите (я бы выбрал цвет, например, ярко-зеленый, чтобы, если вы видите этот цвет на экране, вы знали, что сделали что-то не так с текскордами), в вашем примере это будет 64x128, и откорректируйте ваши координаты текстуры для компенсации. То есть теперь ваши текскорды перейдут с (0, 0) на (53.0 / 64.0, 76.0 / 128.0).

2) Растяните текстуру до ближайшей степени 2, снова 64x128 в вашем примере, и просто используйте существующие текстовые координаты как есть.

1 голос
/ 23 апреля 2011

В целом, это проще и требует меньше места для логики / микросхемы для графического чипа, чтобы адресовать изображения, имеющие степень двойки по ширине и высоте.Это становится еще более важным, если вы начинаете использовать mip-карты.

Некоторые графические чипы OpenGL | ES поддерживают не две текстуры, но это обходится дорого: Mip-карты не поддерживаются, и вы можетеполучить огромное снижение производительности, если вы начнете вращать изображение.

...