Показать сообщение отдельно
Старый 02.10.2008, 16:10   #1
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Печаль Проблема со шрифтом в DX9

Пишу свой 3Д двиг на С++ c юзаньем DX9 для Blitz3D. Все шло нормально пока в один прекрасный день после создания функции загрузки шрифта, и рисования текста ( их код ниже ) все стало лагать(пишет Memory Access Violation ( самое подробное описание проблемы )). Деклс библы проверил все правильно ( вроде бы )( его код тоже покажу ).
Собсно функция создания шрифта и рисования такие

#pragma comment(lib,"d3d9.lib")
#pragma comment(lib,"d3dx9.lib")
#include <d3d9.h>
#include <d3dx9.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <mmsystem.h>
#include <d3dx9core.h>
#define BBDECL extern "C" _declspec(dllexport)
#define BBCALL _stdcall


struct DX9Font
{
LPD3DXFONT fnt;
RECT r;
};


DX9Font DefFont[100];

int NOF = 0;


BBDECL int BBCALL DX9LoadFont(char font[])
{

int ret=0;
if(DefFont[NOF].fnt!=0)
{
DefFont[NOF].r.left=0;
DefFont[NOF].r.top=0;
DefFont[NOF].r.right=1280;
DefFont[NOF].r.bottom=1024;
D3DXCreateFontA(pd3dd,20,10,FW_NORMAL,0,true,100,N ULL,NULL,NULL,(LPCTSTR)font,&DefFont[NOF].fnt);
ret=NOF;
NOF+=1;
};
return ret;
};

BBDECL void BBCALL DX9Text(int x,int y,char text[])
{
DefFont[NOF-1].r.left = x;
DefFont[NOF-1].r.top = y;
DefFont[NOF-1].fnt->DrawTextA(NULL,text,-1,&DefFont[NOF-1].r,DT_WORDBREAK,D3DCOLOR_XRGB(100,100,100));
};



вот деклс библы:

DX9LoadFont%(font$):_DX9LoadFont@4
DX9Text(x,y,text$):_DX9Text@12

в блице пишу вот это

fnt=DX9LoadFont("Courier")
DX9Text 10,10,fnt


плиз помогите, а то застопорился на такой х**не
__________________

(Offline)
 
Ответить с цитированием