|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.08.2012, 12:04 | #11 |
Новичок
Джуниор
Регистрация: 20.08.2012
Сообщений: 15
|
Он состоит из двух файлов
1. dxfunc.h #ifndef _DXFUNC_H_ #define _DXFUNC_H_ #include "d3d9.h" #include "d3dx9.h" // Функция инициализации Direct3D HRESULT DX3DInit (IDirect3D9 **ppiD3D9, IDirect3DDevice9 **ppiD3DDevice9, HWND hWnd, DWORD iWight, DWORD iHeight, BOOL bFullScreen ); #endif 2. dxfunc.cpp #include "dxfunc.h" // Функция инициализации Direct3D HRESULT DX3DInit (IDirect3D9 **ppiD3D9, IDirect3DDevice9 **ppiD3DDevice9, HWND hWnd, DWORD iWight, DWORD iHeight, BOOL bFullScreen) { // Инициализация if((*ppiD3D9 = Direct3DCreate9(D3D_SDK_VERSION)) == NULL) return E_FAIL; //Заполняем основные параметры D3DPRESENT_PARAMETERS d3dpp; ZeroMemory(&d3dpp, sizeof(d3dpp)); d3dpp.BackBufferWidth = iWight; d3dpp.BackBufferHeight = iHeight; // Запрос на отображение в полноэкранном режиме int iRes; if (!bFullScreen) iRes = MessageBox(hWnd, "Use fullscreen mode?", "Screen", MB_YESNO | MB_ICONQUESTION); else iRes = IDYES; if(iRes == IDYES) { ////////////////////////////////// // Полноэкранный режим ////////////////////////////////// // Установка параметров полноэкранного режима d3dpp.BackBufferFormat = D3DFMT_R5G6B5; d3dpp.SwapEffect = D3DSWAPEFFECT_FLIP; d3dpp.Windowed = FALSE; d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; } else { ////////////////////////////////// // Оконный режим ////////////////////////////////// RECT wndRect; RECT clientRect; GetWindowRect(hWnd, &wndRect); GetClientRect(hWnd, &clientRect); int iWinWight = iWight + (wndRect.right - wndRect.left) - (clientRect.right - clientRect.left); int iWinHeight = iHeight + (wndRect.bottom - wndRect.top) - (clientRect.bottom - clientRect.top); MoveWindow(hWnd, wndRect.left, wndRect.top, iWinWight, iWinHeight, TRUE); // Получить формат пиксела D3DDISPLAYMODE d3ddm; (*ppiD3D9) -> GetAdapterDisplayMode(D3DADAPTER_DE FAULT, &d3ddm); // Установка параметров d3dpp.BackBufferFormat = d3ddm.Format; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.Windowed = TRUE; } // Создать 3D - устройство DWORD Flags = D3DCREATE_MIXED_VERTEXPROCESSING | D3DCREATE_MULTITHREADED; HRESULT hRes; if (FAILED(hRes = (*ppiD3D9) -> CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, Flags, &d3dpp, ppiD3DDevice9))) return hRes; // Установить перспективу float Aspect = (float)d3dpp.BackBufferWidth / (float)d3dpp.BackBufferHeight; D3DXMATRIX matProjection; D3DXMatrixPerspectiveFovLH(&matProj ection, D3DX_PI / 4.0f, Aspect, 10.0f, 1000.0f); (*ppiD3DDevice9) -> SetTransform(D3DTS_PROJECTION, &matProjection); return S_OK; } |
21.08.2012, 12:08 | #12 |
Новичок
Джуниор
Регистрация: 20.08.2012
Сообщений: 15
|
Этот пример без буквы L , перед текстом в скобках,но если добавить букву L то начинаются ошибки которые я написал в первом посте
|
21.08.2012, 12:20 | #13 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
|
21.08.2012, 12:20 | #14 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Ну и где в вашем примере функция WinMain?
|
21.08.2012, 12:35 | #15 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,759
|
Цитата:
Цитата:
Проблема с ВинМейн известна, а вот почему не нашли либы от директа интересней. |
||
21.08.2012, 13:42 | #16 |
Новичок
Джуниор
Регистрация: 20.08.2012
Сообщений: 15
|
Создаю WinMain пишет что он перегружен,почему вы не нашли либы от директа? они в файле dxfunc.h написаны
|
21.08.2012, 14:03 | #17 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
либки там не прописаны.
не путайте инклюды и lib файлы. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
21.08.2012, 14:19 | #18 |
Новичок
Джуниор
Регистрация: 20.08.2012
Сообщений: 15
|
dxfunc.h
#ifndef _DXFUNC_H_ #define _DXFUNC_H_ #pragma comment (lib, "d3dx9.lib") #pragma comment (lib, "d3d9.lib") #pragma comment (lib, "dinput8.lib") #pragma comment (lib, "DXGuid.lib") #include <d3dx9core.h> #include <d3d9.h> #include <d3dx9.h> #include <d3dx9tex.h> // Функция инициализации Direct3D HRESULT DX3DInit (IDirect3D9 **ppiD3D9, IDirect3DDevice9 **ppiD3DDevice9, HWND hWnd, DWORD iWight, DWORD iHeight, BOOL bFullScreen ); #endif dxfunc.cpp #include "dxfunc.h" int WINAPI WinMain( HINSTANCE hInstance, // дескриптор текущего экземпляра окна HINSTANCE hPrevInstance,// дескриптор предыдущего экземпляра окна LPSTR lpCmdLine, // указатель на командную строку int nCmdShow // показывает состояние окна ); // Функция инициализации Direct3D HRESULT DX3DInit (IDirect3D9 **ppiD3D9, IDirect3DDevice9 **ppiD3DDevice9, HWND hWnd, DWORD iWight, DWORD iHeight, BOOL bFullScreen) { // Инициализация if((*ppiD3D9 = Direct3DCreate9(D3D_SDK_VERSION)) == NULL) return E_FAIL; //Заполняем основные параметры D3DPRESENT_PARAMETERS d3dpp; ZeroMemory(&d3dpp, sizeof(d3dpp)); d3dpp.BackBufferWidth = iWight; d3dpp.BackBufferHeight = iHeight; // Запрос на отображение в полноэкранном режиме int iRes; if (!bFullScreen) iRes = MessageBox(hWnd, L"Use fullscreen mode?", L"Screen", MB_YESNO | MB_ICONQUESTION); else iRes = IDYES; if(iRes == IDYES) { ////////////////////////////////// // Полноэкранный режим ////////////////////////////////// // Установка параметров полноэкранного режима d3dpp.BackBufferFormat = D3DFMT_R5G6B5; d3dpp.SwapEffect = D3DSWAPEFFECT_FLIP; d3dpp.Windowed = FALSE; d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; } else { ////////////////////////////////// // Оконный режим ////////////////////////////////// RECT wndRect; RECT clientRect; GetWindowRect(hWnd, &wndRect); GetClientRect(hWnd, &clientRect); int iWinWight = iWight + (wndRect.right - wndRect.left) - (clientRect.right - clientRect.left); int iWinHeight = iHeight + (wndRect.bottom - wndRect.top) - (clientRect.bottom - clientRect.top); MoveWindow(hWnd, wndRect.left, wndRect.top, iWinWight, iWinHeight, TRUE); // Получить формат пиксела D3DDISPLAYMODE d3ddm; (*ppiD3D9) -> GetAdapterDisplayMode(D3DADAPTER_DE FAULT, &d3ddm); // Установка параметров d3dpp.BackBufferFormat = d3ddm.Format; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.Windowed = TRUE; } // Создать 3D - устройство DWORD Flags = D3DCREATE_MIXED_VERTEXPROCESSING | D3DCREATE_MULTITHREADED; HRESULT hRes; if (FAILED(hRes = (*ppiD3D9) -> CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, Flags, &d3dpp, ppiD3DDevice9))) return hRes; // Установить перспективу float Aspect = (float)d3dpp.BackBufferWidth / (float)d3dpp.BackBufferHeight; D3DXMATRIX matProjection; D3DXMatrixPerspectiveFovLH(&matProj ection, D3DX_PI / 4.0f, Aspect, 10.0f, 1000.0f); (*ppiD3DDevice9) -> SetTransform(D3DTS_PROJECTION, &matProjection); return S_OK; } |
21.08.2012, 14:20 | #19 |
Новичок
Джуниор
Регистрация: 20.08.2012
Сообщений: 15
|
всё равно ничего не работает
|
21.08.2012, 14:35 | #20 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,759
|
Прототип WinMain вы указали, где сама функция?
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ошибки при компиляции программ на с++/с | Эдуард на связи | Помощь студентам | 1 | 05.04.2012 10:30 |
Синтаксические ошибки при компиляции | Ker_33rus | Visual C++ | 2 | 07.11.2011 13:24 |
Ошибки при компиляции | Tinny | Общие вопросы C/C++ | 7 | 30.06.2011 10:00 |
Ошибки при компиляции | vader2 | Общие вопросы Delphi | 11 | 29.09.2010 16:33 |
ошибки при компиляции | |{ot | Общие вопросы Delphi | 14 | 02.08.2008 01:20 |