ПРОГРАММИРОВАНИЕ! СОЗДАНИЕ САЙТОВ И ИХ ОПТИМИЗАЦИЯ
Главная » Статьи » Программирование » Visual C++ |
Direct3dX - Создание устройства Пусть вы уже нашли где-то DirectX 8.1 и его SDK. Если вы хотите научиться сами создавать простейшее пустое приложение или в вашем SDK нет мастера создания, то вам сюда. Я предполагаю, что вы уже имеете опыт создания приложений для Windows без использования MFC. Если нет, то может быть вам следует посмотреть различные статьи по этой теме. Итак. Создайте проект, присоедините к нему d3d8.lib (в настройках проекта), перейдите в его главный файл и найдите функцию WinMain. Добавьте в нее примерно это: WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, HWND hWnd = CreateWindow( " Lession ", "Lession 1", Этот участок кода стандартен почти для всех Win32 прилжоений. После создания окна необходимо создать устройство Direct3D. Для этого создайте функцию, например, InitD3D(HWND hWnd). В нее включите следующий код: g_pD3D = Direct3DCreate8( D3D_SDK_VERSION ); Перед этим лучше добавить LPDIRECT3D8 g_pD3D в начало програмы после #include. Функчия Direct3DCreate8() возвращает указатель на интерфейс IDirect3D8. Следующий шаг – получение доступного D3D устройства: D3DDISPLAYMODE d3ddm; Дальше необходимо определить настройки вашего 3D приложения с помощью структуры D3DPRESENT_PARAMETERS: D3DPRESENT_PARAMETERS d3dpp; Последний кусок кода в этой функции – завершение создание Direct3d устройства, создание устройства рендеринга. Поместите в начало файла определение LPDIRECT3DDEVICE8 g_pd3dDevice, а следующий код – в InitD3d(). g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, В этой функции параметр D3DDEVTYPE_HAL указывает на то, что используется аппаратное ускорение. hWnd характеризует текущее окно приложения. g_pd3dDevice – новое устройство рендеринга. D3DCREATE_SOFTWARE_VERTEXPROCESSING указывает на то, что используется программная обработка вершин. Если видеокарта поддерживает аппаратую обработку вершин, установите D3DCREATE_HARDWARE_VERTEXPROCESSING для увеличения производительности. Следующий шаг – создание функции обработки системных сообщений. Опять же найдите функцию WinMain(), добавьте в нее во-первых вызов функции InitD3D и показ окна: InitD3D( hWnd ); А во-вторых нужно добавить код получения системных сообщений: MSG msg; Как только вы сделали это, можно создать функцию обработки сооющений: LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) case WM_PAINT: return DefWindowProc( hWnd, msg, wParam, lParam ); Данная функция при получении сообщения о выходе завершает приложение, а при получении сообщения о перерисовке окна она выполняет функцию Render(), о которой будет рассказано ниже. Кстати, вместо WM_PAINT можно использовать WM_TIMER или что-нибудь еще. Теперь самое гланое (почти) – функция рендеринга. Создайте функцию Render и добавьте в нее следующий код: g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 ); Эта функция очищает экран и заполняет его синим (в данном случае) цветом. После этого необходимо начать процедуру рендеринга: g_pd3dDevice->BeginScene(); и закончить ее: g_pd3dDevice->EndScene(); В этой программе нет никаких элементов, которые нужно было бы рендерить, но если бы они были, их нужно было бы размещать между началом и концом рендеринга. Т.к. рендеринг производится на задний буффер, его необходимо отобразить на передний (экран): g_pd3dDevice->Present( NULL, NULL, NULL, NULL ); Теперь вам надо добавить в программу код, который будет отвечать за уничтожение всего того, что вы создали. Для этого найдите WinMain() и припишите перед return 0 следующее: if(g_pd3dDevice != NULL) Вот вроде бы и все. После сборки приложения вы увидите синее окно. Это будет означать, что вы все сделали правильно. Но помните, что это очень нудный вариант создатия программы, т.к. есть очень легкий способ – AppWizard. | |
Просмотров: 455 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |