Resultados 1 al 2 de 2

Tema: Engines gráficos texturas potencia de 2

  1. #1
    Fecha de ingreso
    Nov 2005
    Mensajes
    2,000

    [engines gráficos] texturas potencia de 2

    Dsd siempre se utilizan en los videojuegos texturas potencia de 2 (p2), pero ahora viene mi dilema, yo también siempre las e utilizado en p2, pero alguna vez no lo he hecho, y es que, ahora me viene genial que no lo sea, normalemtne no me han dado problema, por ejemplo una textura de 490 por 1100, pero algunas veces si que me los ha dado, salían puntos negros en algunas zonas de la textura, pero ajustando la imagen a p2, queda 512x1024 y se ve bien, pero no es cuadrada.

    Mis dudas son, el que las texturas tengan que ser cuadradas en potencia de 2, es un mito, o se pueden usar sin problemas. De que depende en que mi equipo se vea bien y en el de otra no, depende del chip gráfico, de la Api? Gracias.

  2. #2
    Fecha de ingreso
    Mar 2004
    Mensajes
    855

    [engines gráficos] texturas potencia de 2

    Te pongo una respuesta que le di a un compañero de Stratos sobre el tema de render targets y texturas potencia de dos:
    Cita Iniciado por /03/06, 06:40
    no tienes por que tener problemas a la hora de crear rts que no sean potencia de dos, siempre que la aceleradora lo soporte. Para saberlo, puedes utilizar el caps viewer y ver si el flag d3dptexturecaps_nonpow2conditional esta activado. Lo que indica ese flag es que bajo ciertas circunstancias, puedes utilizar texturas que no sean potencia de dos. Esas circunstancias son (sacado de la documentación de dx).
    d3dptexturecaps_nonpow2conditional.

    D3dptexturecaps_pow2 is a los set, conditionally supports the use of 2d textures with dimensions that are not Powers of two. A device that exposes this capability can use such a texture if all of the following requirements are met.
    * the texture addressing mode for the texture stage is set todo d3dtadres_clamp.
    * texture wrapping for the texture stage is disabled (d3drs_wrap n set todo 0).
    * mipmapping is not in use (use magnification filter only).
    * texture formats must not be d3dfmt_dxt1 th rouge d3dfmt_dxt5.

    If this flag is not set, and d3dptexturecaps_pow2 is a los not set, then unconditional support is provided for 2d textures with dimensions that are not Powers of two.

    A texture that is not a power of two cannot be set at a stage that Will be read based on a Shader computation (such as the bem - Photoshop and texm3x3 - Photoshop instructions in píxel Shaders versións 1_0 todo 1_3). For example, these textures can be used todo estore bumps that Will be fed into texture reads, but not the environment maps that are used in texbem - Photoshop, texbeml - Photoshop, and texm3x3spec - Photoshop. This means that a texture with dimensions that are not Powers of two cannot be addressed or sampled using texture coordinates computed within the shader. This type of operación is known as a dependent read and cannot be performed on these types of textures.
    Saludos.
    Este es el código de nuestro motor que comprueba si la aceleradora soporta texturas potencia de dos:
    Código:
    if (caps. Texturecaps. Supportspower2).
    {.
    
    If (.caps. Texturecaps. Supportsnonpower2conditional).
    
    Hlogwriter.write (<font color=red>textures must be power of two in size</font>, true, hlogwriter. Style. Blinking).
    
    Else.
    
    Hlogwriter.write (textures do not ned todo be power of two in size (under certain conditions), true).
    }.
    
    Else.
    {.
    
    Hlogwriter.write (textures do not ned todo be power of two in size, true).
    }
    Esto es para managed Direct3D. Para unmanaged Direct3D es similar. Y para OpenGL debe existir una extensión (esta es la pricnipal razón por la que abandoné OpenGL en favor de Direct3D) que te indique esto mismo. Si estas utilizando algún motor, me imagino que también dispondrá de una estructura que te indique las capacidades de la aceleradora.

    En fin, si la aceleradora soporta texturas que no sean potencia de dos, no debería haber problemas, aunque en teoría se hace un uso más óptimo de memoria con las texturas potencia de dos.

    En cualquier caso, siempre se podrían dividir las texturas que no sean potencia de dos en varias texturas que sí lo sean. Creo que esto es lo que hizo un compañero de Stratos en su motor 2d en el que utilizaba Direct3D. Saludos.

Temas similares

  1. Por qué los game engines no apuestan por python?
    Por Spectrex en el foro Noticias 3D
    Respuestas: 6
    : 27-08-2017, 12:44
  2. Engines
    Por yone en el foro Videojuegos
    Respuestas: 1
    : 25-07-2012, 10:48
  3. Sobre game engines y visualización
    Por kellogs en el foro Videojuegos
    Respuestas: 5
    : 07-03-2009, 00:26
  4. Lista de engines
    Por Sadyk en el foro Videojuegos
    Respuestas: 20
    : 27-01-2009, 23:11
  5. Engines engines y engines -
    Por alberizo en el foro Pasatiempos y sugerencias
    Respuestas: 13
    : 28-03-2006, 08:49