Gracias Gracias:  0
Resultados 1 al 2 de 2

Tema: [Engines graficos] Texturas potencia de 2

  1. #1
    Marqués de Carabás Avatar de alberizo
    Fecha de ingreso
    Nov 2005
    Mensajes
    2,061

    [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, x ejemplo una textura de 490x1100, pero algunas veces si que me los a 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
    H = E + L
    Fecha de ingreso
    Mar 2004
    Ubicación
    Entre dos vectores
    Mensajes
    870

    Re: [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 BeRSeRKeR,21/03/06, 06:40
    No tienes por qué 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 alos 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 to D3DTADDRESS_CLAMP.
    * Texture wrapping for the texture stage is disabled (D3DRS_WRAP n set to 0).
    * Mipmapping is not in use (use magnification filter only).
    * Texture formats must not be D3DFMT_DXT1 through D3DFMT_DXT5.

    If this flag is not set, and D3DPTEXTURECAPS_POW2 is alos 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 - ps and texm3x3 - ps instructions in pixel shaders versións 1_0 to 1_3). For example, these textures can be used to store bumps that will be fed into texture reads, but not the environment maps that are used in texbem - ps, texbeml - ps, and texm3x3spec - ps. 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 operation 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 need to be power of two in size (under certain conditions)", true);
    }
    else
    {
     HLogWriter.Write("Textures do not need to 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. Engines
    Por yone en el foro Videojuegos
    Respuestas: 1
    Último mensaje: 25-07-2012, 11:48
  2. sobre game engines y visualizacion
    Por kellogs en el foro Videojuegos
    Respuestas: 5
    Último mensaje: 07-03-2009, 02:26
  3. Modelos mas Engines mas Editor Pase y vea
    Por neodelito en el foro Videojuegos
    Respuestas: 16
    Último mensaje: 11-02-2009, 23:44
  4. lista de engines
    Por Sadyk en el foro Videojuegos
    Respuestas: 20
    Último mensaje: 28-01-2009, 01:11
  5. --- Engines engines y engines -----
    Por alberizo en el foro Todo menos Infografía
    Respuestas: 13
    Último mensaje: 28-03-2006, 09:49

Actualmente estos son sus permisos de publicación en el foro.

  • -No puedes crear nuevos temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes responder temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes subir archivos adjuntos al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes editar tus mensajes al no estar registrado o no haber iniciado sesión en el foro.
  •