|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.08.2011, 17:41 | #1 |
Форумчанин
Регистрация: 05.05.2009
Сообщений: 146
|
Текст в DirectX
доброе время суток возникла такая ошибка при работе с текстом в DirectX
вот алгоритм #include <windows.h> // Подключаем заголовочный файл Windows #include <d3d9.h> // Подключаем заголовочный файл DirectX 9 SDK #include <d3dx9.h> // Подключаем из D3DX утилит для работы с матрицами #include <mmsystem.h> // Подключаем системную библеотеку #include <d3dx9core.h> // работа со шриытом ---------- LPDIRECT3D9 pDirect3D = NULL; // Главный Direct3D обьект LPDIRECT3DDEVICE9 pDirect3DDevice = NULL; // Устройство LPDIRECT3DVERTEXBUFFER9 pBufferVershin = NULL; // Буфер вершин LPDIRECT3DINDEXBUFFER9 pBufferIndex = NULL; // Индексный буфер LPD3DXFONT pFont = 0; //отвечает за текст RECT Rec; //задаёться область вывода текста на экран HFONT hFont; //это переменная содержащая шрифт /////////////////////////////////////////////////////////////////////////////// ВЫВОД ТЕКСТА ////////////////////////////////////////////////////////////////////////////// VOID DrawMyText(LPDIRECT3DDEVICE9 pDirect3DDevice,HFONT hFont, char* StrokaTexta,int x,int y,int x1,int y1,D3DCOLOR MyColor) { hFont = CreateFont(30,10,0,0,FW_NORMAL,FALS E,FALSE,0,1,0,0,0, DEFAULT_PITCH | FF_MODERN,"Arial"); // Координаты прямоугольника для вывода текста на экран Rec.left = x; Rec.top = y; Rec.right = x1; Rec.bottom = y1; // Инициализируем шрифт D3DXCreateFont(pDirect3DDevice, 30,10, 1, 0, FALSE, 0,30,0,0, "Arial", &pFont); !!! здесь ругаеться pFont -> Begin(); !!! здесь ругаеться // Вывод текста pFont->DrawText(0,StrokaTexta, -1, &Rec,DT_WORDBREAK,MyColor) pFont -> End(); !!! здесь ругаеться } //----------------------------------------------------------------------------------- // Функция // RenderingDirect3D() // Рисуем //----------------------------------------------------------------------------------- VOID RenderingDirect3D() { АЛГОРИТМ DrawMyText(pDirect3DDevice,hFont,"Т екст в Direct3D\nДля выхода нажмите клавишу <Esc> ", 50,325,1000,700,D3DCOLOR_ARGB(250,2 50,250,350)); АЛГОРИТМ } //----------------------------------------------------------------------------------- // Функция // DeleteDirect3D() // Освобождает захваченные ресурсы //----------------------------------------------------------------------------------- VOID DeleteDirect3D() { if(pFont != NULL) pFont -> Release(); АЛГОРИТМ } / ///////////////////////////////////////////////////////////////////////////////////// ВОТ ОШИБКИ 1>------ Build started: Project: urok9Text, Configuration: Debug Win32 ------ 1>Compiling... 1>urok9Text.cpp 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\urok9text\urok9text\u rok9text.cpp(215) : error C2039: 'Begin' : is not a member of 'ID3DXFont' 1> c:\program files\microsoft directx sdk (june 2010)\include\d3dx9core.h(319) : see declaration of 'ID3DXFont' 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\urok9text\urok9text\u rok9text.cpp(217) : error C2660: 'ID3DXFont::DrawTextA' : function does not take 5 arguments 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\urok9text\urok9text\u rok9text.cpp(218) : error C2039: 'End' : is not a member of 'ID3DXFont' 1> c:\program files\microsoft directx sdk (june 2010)\include\d3dx9core.h(319) : see declaration of 'ID3DXFont' 1>Build log was saved at "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\urok9Text\urok9Text\D ebug\BuildLog.htm" 1>urok9Text - 3 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== приложение запускаеться но через примерно секунд 20 вылетает ошибка (я зделал видео с этой ошибкой) и приложение закрываеться Весь алгоритм и видео с ошибкой в архиве !!!!!! Если кто-нибудь знает в чём проблема, подскажите пожалуйста. Зарание спасибо. |
25.08.2011, 00:07 | #2 | |
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
Цитата:
Для DrawText надо 6 аргументов. PS. Создание шрифтов не надо в цикле прокручивать - это большая утечка памяти. Создавать при инициализации, а потом DrawText уже в цикле. |
|
25.08.2011, 18:47 | #3 |
Форумчанин
Регистрация: 05.05.2009
Сообщений: 146
|
я исправил, немного код ошибок не выдаёт,но всё равно закрывается с ошибкой.
|
26.08.2011, 16:51 | #4 |
C++,DirectX/OpenGL
Форумчанин
Регистрация: 09.01.2011
Сообщений: 422
|
Какая ошибка ?
Вместо юникода надо поставить многобайтную кодировку. И подключить: "d3d9.lib", "d3dx9.lib", "winmm.lib". А поводу функции DrawMyText она не правильная чуть больше чем полностью. Если мы хотим изменять указатель в функции, то должны указатель передавать через другой указатель или через ссылку, в противном случае изменяться будет только копия переданного указателя. |
26.08.2011, 23:33 | #5 |
Форумчанин
Регистрация: 05.05.2009
Сообщений: 146
|
всё получилась, правда чуть чуть по другому, ну ничё, An1ka спасибо большое за помощь
|
06.10.2011, 06:38 | #6 |
Учусь слушать
Пользователь
Регистрация: 30.01.2011
Сообщений: 66
|
Такаой вопрос тоже по этому поводу. У меня все ок создаеться и отображаеться, НО китайским шрифтом =( В чем проблема??
вот код Код:
Люблю программировать =)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Текст поверх DirectX игры | carliker | Мультимедиа в Delphi | 0 | 10.02.2011 10:04 |
Сохранить в текстовый файл текст из Memo и текст из нескольких Edit | misher | Общие вопросы Delphi | 5 | 02.01.2011 15:37 |
Текст в колонтитулах в обычный текст в Word 2003 | FLOWER2305 | Microsoft Office Word | 0 | 14.12.2010 21:33 |
Дан файл, содержащий текст, записанный строчными русскими буквами. Получить в др.файле тот же текст, | develish151 | Microsoft Office Word | 4 | 05.05.2010 13:20 |
Как узнать какой текст выделен в текст поле | mogul82 | JavaScript, Ajax | 2 | 02.11.2008 16:32 |