PMG http://forum.pmg.org.ru/ |
|
+ ещё один новичек с нубскими вопросами http://forum.pmg.org.ru/viewtopic.php?f=2&t=6733 |
Страница 1 из 1 |
Автор: | Garri66656 [ 14 дек 2008 18:37 ] |
Заголовок сообщения: | + ещё один новичек с нубскими вопросами |
Всем привет. Присоединяюсь к многочисленной армии начинающих геймстроителей и, так же, как и у всех новичков возникла куча проблем. Первая и самая большая проблема, я совсем не знаю Си++ и уж тем более API и DirectX. Много читал, прежде чем заняться и пришел к выводу, что создание консольных калькуляторов, чему учат большинство книг и уроков мне не сильно поможет, так как синтаксис языка это оказалось далеко не самым сложным. В общем, скачал книгу "ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ ТРЕХМЕРНЫХ ИГР С DirectX 9.0" автор Фрэнк Д. Луна и начал познавать. Проблема возникла при инициализации Direct3d Вот пример кода: Код: #include "D:\C++\D3Project2\Headers\d3dUtility.h" IDirect3DDevice9* Device = 0; //реализуем функции, входящие в каркас приложения: bool Setup() { return true; } void Cleanup() { } //В данном примере нам не требуются никакие ресурсы, так что методы Setup и Cleanup остаются пустыми. bool Display(float timeDelta) { if(Device) { Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0x00000000, 1.0f, 0); Device->Present(0, 0, 0, 0); // показ вторичного буфера } return true; } //Объявление функции IDirect3DDevice9::Clear HRESULT IDirect3DDevice9::Clear( DWORD Count, const D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil ); //После того, как поверхность очищена, мы показываем вторичный буфер, вызвав метод IDirect3DDevice9::Present. //Оконная процедура обрабатывает пару событий, а именно позволяет выходить из приложения, нажав клавишу Esc. LRESULT CALLBACK d3d::WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch( msg ) { case WM_DESTROY: ::PostQuitMessage(0); break; case WM_KEYDOWN: if( wParam == VK_ESCAPE ) ::DestroyWindow(hwnd); break; } return ::DefWindowProc(hwnd, msg, wParam, lParam); } //Функция WinMain выполняет следующие действия: //Инициализирует главное окно и Direct3D. //Вызывает процедуру Setup для инициализации приложения. //Запускает цикл обработки сообщений, указав в качестве функции визуализации функцию Display. //Освобождает выделенные приложению ресурсы и объект IDirect3DDevice9. int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE prevInstance, LPSTR cmdLine, int showCmd) { if(!d3d::InitD3D(hinstance, 800, 600, true, D3DDEVTYPE_HAL, &Device)) { ::MessageBox(0, "InitD3D() - FAILED", 0, 0); return 0; } if(!Setup()) { ::MessageBox(0, "Setup() - FAILED", 0, 0); return 0; } d3d::EnterMsgLoop( Display ); Cleanup(); Device->Release(); return 0; } А вот ошибка: error C2761: 'HRESULT IDirect3DDevice9::Clear(DWORD,const D3DRECT *,DWORD,D3DCOLOR,float,DWORD)' : member function redeclaration not allowed Мне показалось, что при объявлении функции IDirect3DDevice9::Clear, были объявлены переменные, типа: Код: DWORD Count, const D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil А присвоения значений этим переменным я в коде не нашел. Может в этом ошибка? Или я неправильно понял и это не переменные? Или может им присваиваются значения в d3dUtility? Мне, как новичку тяжело в этом разобраться, особенно, когда не у кого спросить. Поэтому я пришел на форум, в надежде, что объяснят, помогут, как маленькому разложат по полкам. |
Автор: | NetLib [ 15 дек 2008 13:23 ] |
Заголовок сообщения: | Re: + ещё один новичек с нубскими вопросами |
Garri66656 писал(а): Код: //Объявление функции IDirect3DDevice9::Clear HRESULT IDirect3DDevice9::Clear( DWORD Count, const D3DRECT* pRects, DWORD Flags, D3DCOLOR Color, float Z, DWORD Stencil ); //После того, как поверхность очищена, мы показываем вторичный буфер, вызвав метод IDirect3DDevice9::Present. Вот этот кусок на фиг выкиньте. Он здесь абсолютно не нужен. |
Автор: | Garri66656 [ 15 дек 2008 20:00 ] |
Заголовок сообщения: | Re: + ещё один новичек с нубскими вопросами |
Спасибо. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |