Pb avec DrawText en Direct3D

cs_Kalipo Messages postés 2 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 23 octobre 2004 - 23 oct. 2004 à 14:25
cs_Kalipo Messages postés 2 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 23 octobre 2004 - 23 oct. 2004 à 16:34
Hello,

je debutes dans Direct3D et je passes donc par la phase d'ecriture de texte.
Je developpe en C et j'ai le probleme suivant a ma creation de texte :

Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.

rien de comprehensible pour moi .... enfin pas trop comprehensible ... apparement on perd une variable qui est effacé.

je cree ma Font comme ca:

void build_font(void){

LOGFONT log_font={
32, //height
0, //width;
0, // lfEscapement;
0, //lfOrientation;
FW_BOLD, // lfWeight;
FALSE, // lfItalic;
FALSE, // lfUnderline;
FALSE, // lfStrikeOut;
DEFAULT_CHARSET, // lfCharSet;
OUT_DEFAULT_PRECIS, //lfOutPrecision;
CLIP_DEFAULT_PRECIS, // lfClipPrecision;
ANTIALIASED_QUALITY,// lfQuality;
DEFAULT_PITCH,// lfPitchAndFamily;
"Arial"// lfFaceName[LF_FACESIZE];
};

if(D3D_OK != D3DXCreateFontIndirect(g_d3d_device,&log_font,&g_font))
{
FatalErrorEnd("Error creating font");
}
}

et j'essaie d'ecrire dans mon render comme ca:

void render(void){
static unsigned char red=0,green=0,blue=0;

char buffer[20];

RECT font_rect={0,0,9000,9000};
D3DCOLOR blanc = D3DCOLOR_XRGB(0xff,0xff,0xff);

sprintf(buffer,"test");

IDirect3DDevice8_Clear(g_d3d_device, 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(red,green,blue), 1.0f, 0 );

if(D3D_OK == IDirect3DDevice8_BeginScene(g_d3d_device )){

IDirect3DDevice8_SetVertexShader(g_d3d_device , D3D8T_CUSTOMVERTEX);


IDirect3DDevice8_SetStreamSource(g_d3d_device,0,g_vb,sizeof(struct my_vertex));

IDirect3DDevice8_SetTransform(g_d3d_device,D3DTS_WORLD,&matWorld );

IDirect3DDevice8_DrawPrimitive(g_d3d_device,D3DPT_TRIANGLELIST,0,1);



font_rect.top=0;
DrawText(g_font ,buffer,-1,&font_rect,DT_LEFT,0xFFBBBBBB);

IDirect3DDevice8_EndScene(g_d3d_device);
}

IDirect3DDevice8_Present(g_d3d_device, NULL, NULL, NULL, NULL );

}

Je ne sais pas pkoi ca deconne .... si kk1 a une idée ca pourrait m'aider :) merci

1 réponse

cs_Kalipo Messages postés 2 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 23 octobre 2004
23 oct. 2004 à 16:34
j'ai trouvé une solution !!

il faut rajouter une def

#define ID3DXFONT_DrawText(p,a,b,c,d,e) (p)->lpVtbl->DrawText(p,a,b,c,d,e)

et changer mon DrawFont en :

ID3DXFONT_DrawText(g_font,buffer,-1,&font_rect,DT_LEFT,blanc);

merci quand meme pour ceux qui aurait jeté un coup d'oeil :D
0
Rejoignez-nous