Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Fuentes con ID3DXFont

Iniciado por CoLSoN2, 11 de Noviembre de 2002, 01:29:42 AM

« anterior - próximo »

CoLSoN2

                                Mientras me curro un gestor de fuentes por sprites más curradillo, quiero hacer funcionar este metodo, pero, aun siendo la cosa mas simple delmundo, me falla. La cuestion es que me peta en ejecucion al hacer el D3DXCreateFont.


bool W3C_GFX_Font::Init(IDirect3DDevice8 *dev, HFONT handle, D3DCOLOR fcolor,

     float X1, float Y1, float X2, float Y2)

{

rect->left = (long)X1;

rect->right = (long)X2;

rect->top = (long)Y1;

rect->top = (long)Y2;



if (FAILED(D3DXCreateFont(dev,handle,&font))) // aqui peta

 return false;

return true;

}


dev es el device, bien creado ( a no ser que se necesite algo para hacer funcionar esto ..). font es un puntero a ID3DXFont. Y handle es un HFONT, que obtengo con (HFONT)GetStockObject(SYSTEM_FONT) en ejecucion.

Tambien he probado con D3DXCreateFontIndirect, ppero etaba igual. Alguien sabe ke leches pasa? o_O                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Kriller

                                Eeeeh, pues no sé si será una errata pero por si acaso, cambia esta línea:

rect->top = (long)Y2;    (es la cuarta dentro de la función)

por esta otra:

rect->bottom = (long)Y2;

Vamos, cambia el "top" por "bottom", a ver si es eso.                                

CoLSoN2

                                si, estaba mal eso. Pero peta en la creacion, y en la creacion el RECT no interviene para nada, es durante el render. :                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

metaxas

                                Para crear la fuente yo uso la función D3DXCreateFontIndirect, con ayuda de la estructura LOGFONT:

LOGFONT logFont;



logFont.lfHeight = dwHeight;

logFont.lfWidth  = 0;

logFont.lfEscapement = 0;

logFont.lfOrientation = 0;

logFont.lfWeight = FW_BOLD;

logFont.lfItalic = FALSE;

logFont.lfUnderline = FALSE;

logFont.lfStrikeOut = FALSE;

logFont.lfCharSet = ANSI_CHARSET;

logFont.lfOutPrecision = OUT_DEFAULT_PRECIS;

logFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;

logFont.lfQuality = ANTIALIASED_QUALITY;

logFont.lfPitchAndFamily = DEFAULT_PITCH;

strcpy(logFont.lfFaceName, "Arial");





D3DXCreateFontIndirect(device, &logFont, &font);


y me funciona perfectamente.

Ahora, te aviso de que el ID3DXFont es un interfaz muy cómodo de usar, pero es MUY lento.


Metaxas


P.D: Para saber lo que falla en una llamada a una función de las Directx, recoge el HRESULT que devuelve. En las Directx 8.1 viene un programita llamado 'DXErr' que al meterle el valor del HRESULT te da una descripción del código de error.                                

Zaelsius

Si te das por vencido, puedes usar la clase CD3DFont, que viene en el SDK junto a los common files. Usarla es sencillo y no creo que sea más lenta que la otra opción.

Los ficheros a incluir son(creo): "d3dfont.h" y "d3dutil.h"

Mirate algun sample del SDK para ver como se usa.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.