Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Помогите, Помогите 
:(
    Опции темы
Stas96
Дата 28.10.2009, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 13.9.2009
Где: Дом

Репутация: нет
Всего: нет



Помогите пожайлусто!!!!!Изучаю книгу "Френк Д. Луна - Программирование трехмерных игр с DirectX 9"
Ну у меня проблемма вот код представленный в книги для "инициализацию Direct3D-приложения и очистки экрана, заполнив его черным цветом "

d3dUtility.h
Код

// Включение основного заголовочного файла Direct3DX. В нем осуществляется
// включение других, необходимых нам заголовочных файлов Direct3D.
#include <d3dx9.h>

namespace d3d
{
    bool InitD3D(
        HINSTANCE hInstance,  // [in] Экземпляр приложения.
        int width,int height, // [in] Размеры вторичного буфера.
        bool windowed,       // [in] Оконный (true) или
                             //      полноэкранный (false) режим.
       D3DDEVTYPE deviceType,// [in] HAL или REF
       IDirect3DDevice9** device);// [out] Созданное устройство.
 
    int EnterMsgLoop(
        bool (*ptr_display)(float timeDelta));


LRESULT CALLBACK WndProc(
                         HWND hwnd,
                         UINT msg,
                         WPARAM wParam,
                         LPARAM lParam);

template<class T> void Release(T t)
{
    if(t)
    {
        t->Release();
        t = 0;
    }
}




template<class T> void Delete(T t)
{
    if(t)
    {
        delete t;
        t = 0;
    }
  }
}
int d3d::EnterMsgLoop(bool(*ptr_display)(float timeDelta))
{
    MSG msg;
    ::ZeroMemory(&msg, sizeof(MSG));

    static float lastTime = (float)timeGetTime();
    while(msg.message != WM_QUIT)
    {
        if(::PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
        {
            ::TranslateMessage(&msg);
            ::DispatchMessage(&msg);
        }
        else
        {
            float currTime = (float)timeGetTime();
            float timeDelta = (currTime - lastTime) * 0.001f;
            ptr_display(timeDelta); // вызов функции визуализации
            lastTime = currTime;
        }
     }
return msg.wParam;
}


d3dUtility.cpp
Код

#include "d3dUtility.h"



IDirect3DDevice9* Device = 0;

bool Setup()
{
    return true;
}
void 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;
}
HRESULT IDirect3DDevice9::Clear(
     DWORD Count,
     const D3DRECT* pRects,
     DWORD Flags,
     D3DCOLOR Color,
     float Z,
     DWORD Stencil
);





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);
}
int WINAPI WinMain(HINSTANCE hinstance,
                   HINSTANCE prevInstance,
                   LPSTR cmdLine,
                   int showCmd)
{
    if(!d3d::InitD3D(hinstance, 800, 600,
                  true, D3DDEVTYPE_HAL, &Device))
    {
        ::MessageBox(0, L"InitD3D() - FAILED", 0, 0);
        return 0;
    }

    if(!Setup())
    {
        ::MessageBox(0, L"Setup() - FAILED", 0, 0);
        return 0;
    }

    d3d::EnterMsgLoop( Display );

    Cleanup();

    Device->Release();

    return 0;
}





Выдает ошибку:"HRESULT IDirect3DDevice9::Clear(DWORD,const D3DRECT *,DWORD,D3DCOLOR,float,DWORD): повторное объявление функции не разрешается"
PM MAIL   Вверх
Alexeis
Дата 28.10.2009, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 5
Всего: 459




M
Alexeis
Модератор: Название темы должно отражать ее суть!


Или предлагайте новый вариант заголовка или делайте новую тему.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0421 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.