Текстуры OpenGL, размер которых не равен 2 ^ x

StackOverflow https://stackoverflow.com/questions/363302

  •  21-08-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top