texturas openGL que não são 2 ^ x em dimensão
Pergunta
Eu estou tentando exibir uma imagem em um ambiente openGL. dimensões origninal da imagem são 3648x2432, e eu quero para exibi-lo com uma imagem de 256x384. O problema é, 384 não é uma potência de 2, e quando eu tentar exibi-lo, parece esticado. Como posso resolver isso?
Solução
Há três maneiras de fazer isso, que eu saiba -
- A única Albert sugeriu (redimensioná-la até que ela se encaixa).
- Subdivide a textura em 2 ** n-sized retângulos, e peça-los juntos de alguma forma.
- Veja se você pode usar
GL_ARB_texture_non_power_of_two
. É provavelmente o melhor para evitá-lo, porém, uma vez que parece que é uma extensão específica do Xorg.
Outras dicas
Você pode redimensionar a textura para que ele é uma potência de dois (distorcer a sua textura para que quando ele é mapeado sobre o objeto parece correto).
ARB_texture_rectangle
é provavelmente o que você está procurando. Ele permite que você ligar a GL_TEXTURE_RECTANGLE_ARB
vez de GL_TEXTURE_2D
, e você pode carregar uma imagem com os não dimensões potência de 2. Esteja ciente de que suas coordenadas de textura vai variar de [0..w] x [0..h] em vez de [0..1] x [0..1].
Se GL_EXT_texture_rectangle é verdade, então usar GL_TEXTURE_RECTANGLE_EXT pela primeira param em glEnable () e glBindTexture () chamadas.