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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top