Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: всё название в верхнем регистре
Старый 24.08.2011, 17:41   #1
alhon
Форумчанин
 
Регистрация: 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 вылетает ошибка (я зделал видео с этой ошибкой) и приложение закрываеться

Весь алгоритм и видео с ошибкой в архиве !!!!!!

Если кто-нибудь знает в чём проблема, подскажите пожалуйста. Зарание спасибо.
Вложения
Тип файла: rar ошибка.rar (1.31 Мб, 15 просмотров)
alhon вне форума Ответить с цитированием
Старый 25.08.2011, 00:07   #2
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от alhon Посмотреть сообщение
error C2039: 'Begin' : is not a member of 'ID3DXFont'
error C2039: 'End' : is not a member of 'ID3DXFont'
Нет таких методов.
Цитата:
Сообщение от alhon Посмотреть сообщение
error C2660: 'ID3DXFont::DrawTextA' : function does not take 5 arguments
Для DrawText надо 6 аргументов.

PS. Создание шрифтов не надо в цикле прокручивать - это большая утечка памяти. Создавать при инициализации, а потом DrawText уже в цикле.
An1ka вне форума Ответить с цитированием
Старый 25.08.2011, 18:47   #3
alhon
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 146
По умолчанию

я исправил, немного код ошибок не выдаёт,но всё равно закрывается с ошибкой.
alhon вне форума Ответить с цитированием
Старый 26.08.2011, 16:51   #4
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Какая ошибка ?
Вместо юникода надо поставить многобайтную кодировку.
И подключить: "d3d9.lib", "d3dx9.lib", "winmm.lib".
А поводу функции DrawMyText она не правильная чуть больше чем полностью.
Если мы хотим изменять указатель в функции, то должны указатель передавать через другой указатель или через ссылку, в противном случае изменяться будет только копия переданного указателя.
An1ka вне форума Ответить с цитированием
Старый 26.08.2011, 23:33   #5
alhon
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 146
По умолчанию

всё получилась, правда чуть чуть по другому, ну ничё, An1ka спасибо большое за помощь
alhon вне форума Ответить с цитированием
Старый 06.10.2011, 06:38   #6
masashama
Учусь слушать
Пользователь
 
Регистрация: 30.01.2011
Сообщений: 66
По умолчанию

Такаой вопрос тоже по этому поводу. У меня все ок создаеться и отображаеться, НО китайским шрифтом =( В чем проблема??
вот код
Код:
D3DXCreateFont(pDirect3DDevice,
							  12,
							  0,
							  0,
							  1,
							  FALSE,
							  DEFAULT_CHARSET,
							  OUT_DEFAULT_PRECIS,
							  DEFAULT_QUALITY,
							  DEFAULT_PITCH|FF_DONTCARE,
							  L"Tahoma",
							  &pFont);
Люблю программировать =)
masashama вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текст поверх 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