Pregunta

Estoy tratando de mostrar una imagen en un entorno OpenGL. origninal dimensiones de la imagen son 3648x2432, y yo quiero mostrar como una imagen de 256x384 con. El problema es, 384 no es una potencia de 2, y cuando trato de mostrarlo, se ve estirada. ¿Cómo puedo arreglar eso?

¿Fue útil?

Solución

Hay tres maneras de hacer esto, que yo sepa -

  • El Albert sugirió (cambiar su tamaño hasta que se ajuste).
  • subdividir la textura en 2 ** rectángulos n de tamaño, y la pieza de juntas de alguna manera.
  • A ver si puedes usar GL_ARB_texture_non_power_of_two. Es probablemente el mejor para evitarlo embargo, ya que parece que es una extensión de Xorg-específica.

Otros consejos

Puede cambiar el tamaño de la textura por lo que es una potencia de dos (sesgar la textura de manera que cuando se proyecta sobre el objeto que parece correcta).

ARB_texture_rectangle es probablemente lo que estás buscando. Se permite enlazar a GL_TEXTURE_RECTANGLE_ARB en lugar de GL_TEXTURE_2D, y se puede cargar una imagen con las dimensiones no poder-de-2. Tenga en cuenta que sus coordenadas de texturas van desde [0..w] x [0..h] en lugar de [0..1] x [0..1].

Si GL_EXT_texture_rectangle es cierto, entonces utilizar GL_TEXTURE_RECTANGLE_EXT para el primer parámetro en glEnable () y GLBindTexture () llama.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top