forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Проблема со шрифтом в DX9 (http://forum.boolean.name/showthread.php?t=6515)

mr.DIMAS 02.10.2008 16:10

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

#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


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

mr.DIMAS 02.10.2008 16:23

Re: Проблема со шрифтом в DX9
 
Вложений: 1
Ладно для большей наглядности вот полный набор исходняков движка

IGR 03.10.2008 14:11

Ответ: Проблема со шрифтом в DX9
 
у тебя поле структуры fnt и имя шрифта в Блиц3Д тож fnt !! мож они как-то несопоставими !! попробуй в Блиц3Д другое название шрифта !!

PS: ничего утверждать немогу т.к. не могу проверить, несмотрия на наличие исходников !! :(

mr.DIMAS 03.10.2008 21:20

Re: Проблема со шрифтом в DX9
 
спасибо, проверю

IGR 07.10.2008 14:17

Ответ: Проблема со шрифтом в DX9
 
mr.DIMAS, ну как, оно ?? ;)

mr.DIMAS 08.10.2008 17:10

Re: Проблема со шрифтом в DX9
 
хер*во! не работает! бьюсь бьюсь не как не добьюсь

Genius 11.10.2008 16:48

Ответ: Проблема со шрифтом в DX9
 
Цитата:

Сообщение от IGR (Сообщение 87537)
у тебя поле структуры fnt и имя шрифта в Блиц3Д тож fnt !! мож они как-то несопоставими !! попробуй в Блиц3Д другое название шрифта !!

PS: ничего утверждать немогу т.к. не могу проверить, несмотрия на наличие исходников !! :(

Бред:)! Он возвращает не имя же,а индекс шрифта...

А теперь не потеме маленько:
mr.DIMAS ,не юзаю структуры для обьектов тима mesh и т.д ,юзай классы,да RenderWorld слишком стрёмный,сделай SceneNode"ы ну или как это в блице завётся Entity"ии,
И ещё - сделайн ормальный класс шрифтов :) а не создавай стек с шрифтами и возвращая их индекс.

Вчём прикол?:
fnt=DX9LoadFont("Courier")
DX9Text 10,10,fnt
нафига заместо текста ты передаеш индекс шрифта?

Тогда уж так:
fnt=DX9LoadFont("Courier")
DX9Text 10,10,"TEXT , TEXT , TEXT"


Часовой пояс GMT +4, время: 12:29.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot