текстуры openGL, размер которых не равен 2 ^ x - PullRequest
4 голосов
/ 12 декабря 2008

Я пытаюсь отобразить изображение в среде openGL. Оригинальные размеры изображения 3648x2432, и я хочу отобразить его с изображением 256x384. Проблема в том, что 384 не является степенью 2, и когда я пытаюсь отобразить его, он выглядит растянутым. Как я могу это исправить?

Ответы [ 4 ]

3 голосов
/ 12 декабря 2008

Есть три способа сделать это, о которых я знаю -

  • Тот, который предложил Альберт (измените размер, пока он не уместится).
  • Разделите текстуру на 2 ** прямоугольника размера n и каким-то образом соедините их вместе.
  • Посмотрите, можете ли вы использовать GL_ARB_texture_non_power_of_two. Хотя, вероятно, лучше этого избегать, поскольку похоже, что это расширение для Xorg.
2 голосов
/ 12 декабря 2008

Вы можете изменить размер текстуры, чтобы она была степенью двойки (наклоните текстуру, чтобы при наложении на объект она выглядела правильно).

0 голосов
/ 23 декабря 2008

Если GL_EXT_texture_rectangle имеет значение true, тогда используйте GL_TEXTURE_RECTANGLE_EXT для первого параметра в вызовах glEnable () и GLBindTexture ().

0 голосов
/ 12 декабря 2008

ARB_texture_rectangle это, вероятно, то, что вы ищете. Это позволяет вам связывать GL_TEXTURE_RECTANGLE_ARB вместо GL_TEXTURE_2D, и вы можете загрузить изображение с размерами не степенью 2. Имейте в виду, что ваши текстурные координаты будут варьироваться от [0..w] x [0..h] вместо [0..1] x [0..1].

...