Причина, по которой большинству систем (даже многих современных видеокарт) требуются текстуры степени 2, - это отображение.
Что такое mipmapping?
Меньшие версии изображения будут созданы для того, чтобы вещь выглядела правильно при очень маленьком размере. Изображение делится на 2 снова и снова для создания новых изображений.
Итак, представьте изображение 256x128. Это будет иметь меньшие версии, созданные размером 128х64, 64х32, 32х16, 16х8, 8х4, 4х2, 2х1 и 1х1.
Если бы это изображение было размером 256x192, оно будет работать нормально, пока вы не уменьшите размер до 4x3. Следующее меньшее изображение будет 2x1,5, что, очевидно, не является допустимым размером. Некоторое графическое оборудование может справиться с этим, но многие типы не могут.
Некоторым аппаратным средствам также требуется квадратное изображение, но это уже не так часто.
Зачем вам нужно mipmapping?
Представьте, что у вас есть ОЧЕНЬ далекое изображение, размером всего 4 пикселя. Теперь, когда каждый пиксель нарисован, в качестве цвета для этого пикселя будет выбрана позиция на изображении. Таким образом, вы получите 4 пикселя, которые могут быть не совсем представительными для изображения в целом.
Теперь представьте, что картина движется. Каждый раз, когда рисуется новый кадр, выбирается новый пиксель. Поскольку изображение НАСТОЛЬКО далеко, вы, скорее всего, увидите очень разные цвета для небольших изменений в движении. Это приводит к очень уродливому миганию.
Отсутствие mipmapping вызывает проблемы для любого размера, который меньше, чем размер текстуры, но это наиболее заметно, когда изображение отрисовывается до очень небольшого количества пикселей.
При использовании mipmaps аппаратное обеспечение будет иметь доступ к версии текстуры 2x2, поэтому каждый пиксель будет иметь средний цвет этого квадранта изображения. Это устраняет нечетное мигание цвета.
http://en.wikipedia.org/wiki/Mipmap
Править людям, которые говорят, что это больше не правда:
Это правда, что многие современные графические процессоры могут поддерживать текстуры не-степени двух, но также верно, что многие не могут.
Фактически, только на прошлой неделе в приложении XNA, над которым я работал, была текстура 1024x768, и это вызывало сбой при загрузке игры на ноутбуке, которому было всего около года. Это работало хорошо на большинстве машин все же. Можно с уверенностью сказать, что графический процессор iPhone намного проще, чем полноценный графический процессор для ПК.