Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HRESULT D3DXCreateFont 
:(
    Опции темы
Gremlin
Дата 15.10.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 28.8.2006

Репутация: нет
Всего: нет



В книжке написано что есть такая функция
HRESULT D3DXCreateFont(
  LPDIRECT3DDEVICE9 pDevice,
  HFONT * hFont,
  LPD3DXFONT * ppFont
);
но у меня она выглядит так
HRESULT D3DXCreateFont(
  LPDIRECT3DDEVICE9 pDevice,
  INT Height,
  UINT Width,
  UINT Weight,
  UINT MipLevels,
  BOOL Italic,
  DWORD CharSet,
  DWORD OutputPrecision,
  DWORD Quality,
  DWORD PitchAndFamily,
  LPCTSTR pFacename,
  LPD3DXFONT * ppFont
);
и у LPD3DXFONT нету Begin(), End(). Неужели в разных версиях DirectX9 SDK разные функции????

я сделал 
D3DXCreateFont(pDirect3DDevice, 30, 10, FW_NORMAL, 0, false, 1, 0, 0, DEFAULT_PITCH|FF_MODERN, "Arial", &pFont);
pFont->DrawText(NULL, StrokaTexta, -1, &Rec, DT_WORDBREAK, MyColor);
текст появляется но через какоето время исчезает и машина начинает тормозить >_<


зы в книге описана работа с DirectX9b, а у меня SDK апрельская! 

PM MAIL   Вверх
WERITAS
Дата 15.10.2007, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



 smile 
Последним предложением вы сами ответили на свой вопрос....
Цитата
в книге описана работа с DirectX9b, а у меня SDK апрельская!

... эта дополнительная библиотека написана левой пяткой. Ребята из M$ и не собираются  делать совместимость этой библы с разными версиями D3D.

P.S.
Я лично против этой дополнительной библиотеки - можно и нужно обойтись и без нее!


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
Gremlin
Дата 15.10.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 119
Регистрация: 28.8.2006

Репутация: нет
Всего: нет



не понял про какую дополнительную библиотеку речь )
Код

D3DXCreateFont(pDirect3DDevice, 30, 10, FW_NORMAL, 0, false, 1, 0, 0, DEFAULT_PITCH|FF_MODERN, "Arial", &pFont);
pFont->DrawText(NULL, StrokaTexta, -1, &Rec, DT_WORDBREAK, MyColor);

Это правильный код???? у меня память куда то утекает и текст пропадает И изображение дергается, что сдесь не так??? а когда я коментирую вторую строчку то все норм тока текста нет ))) меня смущает что нету Begin(), End() тока не понимаю чем это заменяется!!! Подскажите плиз!

PM MAIL   Вверх
WERITAS
Дата 16.10.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: нет
Всего: 5



Цитата(Gremlin @ 15.10.2007,  19:39)
не понял про какую дополнительную библиотеку речь )

А вы не знали, что юзаете не D3D, а её  дополнительную библиотеку со вспомогательными функциями, которые начинаются с D3DX**** ?!  smile 



--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
sanches80
Дата 17.9.2009, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 17.9.2009

Репутация: 1
Всего: 1



Может уже не актуально, но все равно скажу.

Почему нет Begin, End вам уже объяснили. Дастаточно, чтобы текст отрисовывался между операциями BeginScene - EndScene.

Память утекает потому, что вы каждый раз при прорисовке очередного кадра, создаете новый объект pFont, предыдущий соответственно не удаляется. Тормозит, вероятно потому что зациклинное создание строки, есть суть нетривиальная операция, требующая ресурсов. Ваш код, очень похож на код из книги Горнакова С, я сам по ней делал примеры и нарвался на такую же проблему. У меня когда кончилась память, а я не успел выключить приложение, машина накрылась медным тазом с блю скрином. Но выжила вроде, без последствий.

Вообщем я создал шрифт в отдельном методе, в момент инициализации основных интерфейсов DirectX, это происходит один раз как вы понимаете, за всю жизнь приложения.

А непосредственно сам вывод текста, оставил между  BeginScene - EndScene. Память перестала утекать и тормозить перестало.

Удачи.

PS. Прикрепил исходник.

Присоединённый файл ( Кол-во скачиваний: 48 )
Присоединённый файл  main.cpp 13,77 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0863 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.