Dudas sobre como cargar texturas

Buenas a todos! Tengo varias dudas al respecto de como cargar texturas para luego ser utilizadas en superficies. He estado mirando los ejemplos de nehe y los veo sencillos pero me he puesto a mirar el manual de Graficos 3D para Wii de Hermes al cual le doy mil gracias [tadoramo] por escribirlo y lo hace de forma diferente.
Ahora mismo las pruebas que he realizado a sido tal como vienen en los ejemplos de nehe ya que es mucho mas sencillo pero me gustaria saber cual es la forma mas correcta de cargar texturas o cuando se deberia utilizar una forma u otra?

Por otro lado me gustaria saber tambien como puedo hacer que una textura se adapte al tamaño de la superficie sobre la que esta es decir se expananda o se contraiga en funcion del tamaño de la superficie. Ya que ahora mismo con las pruebas que he hecho, al hacer la superficie mas grande o mas pequeña la textura nunca varia su tamaño.

Muchas gracias!

Este es el codigo que estoy utilizando para cargar texturas:
#include "texture_tpl.h"
#include "texture.h"

GXTexObj texObj;

// inicializacion de screen y de wpad ...

       GX_ClearVtxDesc();
       GX_SetVtxDesc(GX_VA_POS, GX_DIRECT);
       GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT);

        GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0);
        GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
   

   GX_SetNumChans(1);
   GX_SetNumTexGens(1);
   GX_SetTevOp(GX_TEVSTAGE0, GX_REPLACE);
   GX_SetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
   GX_SetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY);


   GX_InvalidateTexAll();

   TPLFile textureTPL;
   TPL_OpenTPLFromMemory(&textureTPL, (void *)textures_tpl,textures_tpl_size);
   TPL_GetTexture(&textureTPL,ballsprites,&texObj);
   GX_LoadTexObj(&textureObj, GX_TEXMAP0);

   GX_Begin(GX_QUADS, GX_VTXFMT0, 4);         
      GX_Position2f32(x, y);               
      GX_TexCoord2f32(0.0, 0.1);
      GX_Position2f32(x+width-1, y);         
      GX_TexCoord2f32(1.0, 1.0);
      GX_Position2f32(x+width-1,y+height-1);
      GX_TexCoord2f32(1.0, 0.0);
      GX_Position2f32(x,y+height-1);
      GX_TexCoord2f32(0.0, 0.0);
   GX_End();

0 respuestas