Плз помогите не может запуститься прога кидаю код
//Создание шрифта и вывод текста на экран в Direct3D
#include <windows.h>//подключаем заголовочный файл Windows
#include <d3d9.h>//подключаем заголовочный файл DirectX SDK 9
#include <d3dx9.h>//заголовочный файл с матричными функциями
#include <d3dx9core.h>//подключаем файл для работы со шрифтами
#include "TCHAR.h"
//=============================================================================
//глобальные переменные
//=============================================================================
LPDIRECT3D9 pDirect3D = NULL;//указатель на главный интерфейс Direct3D9
LPDIRECT3DDEVICE9 pDirect3DDevice = NULL;//указатель на интерфейс устройства Direct3D9
LPDIRECT3DVERTEXBUFFER9 pVertexBuffer = NULL; //глобальная переменная-указатель на буфер вершин
LPDIRECT3DINDEXBUFFER9 pIndexBuffer = NULL; //указатель на буфер индексов вершин
LPD3DXFONT pFont = NULL;//указатель на интефейс, отвечающий за работу со шрифтом
RECT Rect;//переменная, которая будет задавать область вывода на экран
HFONT hFont;//переменная, в которой находится сам шрифт
//=============================================================================
//структуры
//=============================================================================
struct CUSTOMVERTEX //структура вершины
{
FLOAT x, y, z;//координаты
FLOAT nx, ny, nz;//нормали
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_NORMAL)//описываем свой формат D3DFVF_CUSTOMVERTEX содержания вершин в отдельном потоке данных
//=============================================================================
//функции
//=============================================================================
//инициализация Direct3D9
HRESULT InitialDirect3D(HWND hWnd)
{
if (NULL == (pDirect3D = Direct3DCreate9(D3D_SDK_VERSION)))//создаём объект главного интерфейса Direct3D9
return E_FAIL;
D3DDISPLAYMODE Display;//режим дисплея
if (FAILED(pDirect3D -> GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &Display)))//получаем текущий формат дисплея
return E_FAIL;
D3DPRESENT_PARAMETERS Direct3DParameter;//объект параметров представления
ZeroMemory(&Direct3DParameter, sizeof(Direct3DParameter));
Direct3DParameter.Windowed = FALSE;//оконный или полноэкранный режим
Direct3DParameter.SwapEffect = D3DSWAPEFFECT_DISCARD;//параметр для определения обмена буферов
Direct3DParameter.BackBufferFormat = Display.Format;//формат поверхности заднего буфера
Direct3DParameter.EnableAutoDepthStencil = TRUE;//включаем z-буфер
Direct3DParameter.AutoDepthStencilFormat = D3DFMT_D16;//формат поверхности z-буфера
Direct3DParameter.BackBufferWidth = GetSystemMetrics(SM_CXSCREEN);//устанавливаем ширину заднего буфера равную ширине нашего экрана
Direct3DParameter.BackBufferHeight = GetSystemMetrics(SM_CYSCREEN);//устанавливаем высоту заднего буфера равную высоте нашего экрана
Direct3DParameter.BackBufferCount = 3;//устанавливаем количество буферов
Direct3DParameter.FullScreen_RefreshRateInHz = Display.RefreshRate;//устанавливаем частоту обновления экрана для полноэкранного режима
//создание объекта для интерфейса устройства
if (FAILED(pDirect3D -> CreateDevice(D3DADAPTER_DEFAULT, //видеокарта
D3DDEVTYPE_HAL, //тип устройства (использовать ли акселерацию видеокарты)
hWnd, //дескриптор главного окна
D3DCREATE_SOFTWARE_VERTEXPROCESSING, //как будет происходить обработка вершин
&Direct3DParameter, //параметры пердставления
&pDirect3DDevice))) //указатель на интерфейс IDirect3DDevice9
return E_FAIL;
pDirect3DDevice -> SetRenderState(D3DRS_CULLMODE, D3DCULL_CW);//включаем отсечение по часовой стрелке
pDirect3DDevice -> SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);//включаем z-буфер
return S_OK;
}
void MyTextOut(long x1, long y1, long x2, long y2)
{
D3DCOLOR FontColor = D3DCOLOR_ARGB (255,0,0,255);
RECT pRect; //переменная, которая будет задавать область вывода на экран
D3DXCreateFont (pDirect3DDevice, 20, 0, FW_BOLD, 0, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, TEXT ("Arial"), &pFont);
// координаты прямоугольнка
pRect.left = x1;
pRect.top = y1;
pRect.right = x2;
pRect.bottom = y2;
// Вывод текста
pFont->DrawText(NULL, _T("Hello World"), -1, &pRect, 0, FontColor);
}
//рендеринг
VOID RenderingDirect3D()
{
if (pDirect3DDevice == NULL) //проверяем было ли создано устройство без ошибок
return;
//очистка заднего буфера
pDirect3DDevice -> Clear(0, //номер массива прямоугольников, подвергаюзихся очистке (0 - для очистки всех прямоугольников)
NULL, //адрес массива прямоугольников
D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, //флаги, какие из поверхностей нужно очищать
D3DCOLOR_XRGB(172, 221, 101),//обычный цвет для очистки
1.0f, //значение z-буфера
0); //значение буфера трафарета
//**************************************************************************************************
pDirect3DDevice -> BeginScene(); //начало сцены
//вывод текста на экран
int ix=0;
MyTextOut( 10, 10, 400, 400);
pDirect3DDevice -> EndScene(); //конец сцены
//**************************************************************************************************
//вывод на экран отрисованного из заднего буфера на передний
pDirect3DDevice -> Present(NULL, //указатель на структуру RECT исходной поверхности
NULL, //указатель на структуру RECT поверхности адресата
NULL, //указатель на окно адресата, чья клиентская часть взята, как адрес для этого параметра представления
NULL); //не используется, оставлен для совместимости
}
//освобождение захваченных ресурсов
VOID DeleteDirect3D()
{
if (pFont != NULL)
pFont -> Release();
if (pDirect3DDevice != NULL)
pDirect3DDevice -> Release();
if (pDirect3D != NULL)
pDirect3D -> Release();
}
//обработка сообщений, посылаемых окну
LRESULT CALLBACK MainWinProc(HWND hWnd,//дескриптор окна
UINT msg,//идентификатор сообщения
WPARAM wParam,//дополнительная информация
LPARAM lParam)//дополнительная информация
{
switch(msg)
{
case WM_KEYDOWN://обработка нажатий клавиш
{
if (wParam == VK_ESCAPE)//если нажали Esc
PostQuitMessage(0);//то закрываем приложение
return 0;
}
case WM_PAINT:
RenderingDirect3D(); //выполняем рендеринг всей сцены
ValidateRect(hWnd, NULL); //прорисовка всей клиентской части окна
break;
case WM_DESTROY:
{
DeleteDirect3D(); //освобождаем ресурсы
PostQuitMessage(0);
return 0;
} break;
}
return (DefWindowProc(hWnd, msg, wParam, lParam));
}
//=============================================================================
//главная функция
//=============================================================================
//входная точка приложения
INT WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, INT nCmdShow)
{
HWND hWnd;//дескриптор окна
WNDCLASSEX WindowsClass;//класс окна
MSG msg; //сообщение
WindowsClass.cbSize = sizeof(WNDCLASSEX);//размер создаваемой структуры
WindowsClass.style = CS_VREDRAW|CS_HREDRAW|CS_OWNDC|CS_DBLCLKS;//стили
WindowsClass.lpfnWndProc = MainWinProc;//указатель на функцию обратного вызова
WindowsClass.cbClsExtra = 0;//дополнительная информация (в DirectX не используется)
WindowsClass.cbWndExtra = 0;//дополнительная информация (в DirectX не используется)
WindowsClass.hInstance = hInstance;//ссылка на окно
WindowsClass.hIcon = LoadIcon(NULL,IDI_APPLICATION);//иконка приложения (пиктограмма)
WindowsClass.hCursor = LoadCursor(NULL,IDC_ARROW);//курсор
WindowsClass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);//цвет фона окна
WindowsClass.lpszMenuName = NULL; //указатель на меню окна
WindowsClass.lpszClassName = _T("WINDOWSCLASS");//название класса окна для создаваемого приложения
WindowsClass.hIconSm = LoadIcon(NULL,IDI_APPLICATION);//маленькая пиктограмма на панели задач
if (!RegisterClassEx(&WindowsClass))//регистрируем класс окна
return 0;
//создаём окно
if (!(hWnd = CreateWindowEx(NULL,//стиль окна
_T("WINDOWSCLASS"),//класс
_T("Orlan DirectX Application"),//название окна
WS_OVERLAPPEDWINDOW|WS_VISIBLE,//стиль и поведение окна
0,0,//левый верхний угол
1024,768,//ширина и высота
NULL,//дескриптор родительского окна
NULL,//дескриптор меню
hInstance,//дескриптор родительского приложения
NULL))) //указатель на данные окна
return 0;
if (SUCCEEDED(InitialDirect3D(hWnd))) //если удалось удачно инициализировать Direct3D
{
ShowWindow(hWnd,nCmdShow);//показываем окно
UpdateWindow(hWnd);//обновляем окно
ZeroMemory(&msg, sizeof(msg));
while(msg.message != WM_QUIT)//главный обработчик событий
{
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&msg);//преобразование клавиатурного ввода
DispatchMessage(&msg);//обработка и пересылка сообщений в WinProc
}
else
RenderingDirect3D();//рендеринг
}
}
return 0;
}
И вот ошибки, если не трудно, отпишите как правИльно
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ _Direct3DCreate9@4 в функции "long __cdecl InitialDirect3D(struct HWND__ *)" (?InitialDirect3D@@YAJPAUHWND__@@@Z) C:\Documents and Settings\Grosner\Мои документы\Visual Studio 2010\Projects\text\text.obj text
Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ _D3DXCreateFontW@48 в функции "void __cdecl MyTextOut(long,long,long,long)" (?MyTextOut@@YAXJJJJ@Z) C:\Documents and Settings\Grosner\Мои документы\Visual Studio 2010\Projects\text\text.obj text
Ошибка 3 error LNK1120: 2 неразрешенных внешних элементов C:\Documents and Settings\Grosner\Мои документы\Visual Studio 2010\Projects\Debug\text.exe 1 1 text