Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сборка direct3d

29K
19 сентября 2008 года
Existor
20 / / 03.07.2008
Взял примерр создания окна direct3d с сайта как собрать данную программу из командной строки не используя Microsoft Visual C++?

Код:
//-----------------------------------------------------------------------------
//
//  Project     ->  D3D8 Tutorial 01 - Application Initialization
//  File        ->  Tutorial_01 Application Initialization.cpp
//     
//  Desc        ->  main module
//
//
//  Autor       ->  Denis "Mr.Snow" Kozhukhov
//                  Choco Snow Creation
//                  dkcscPortal
//  URL         ->  //  mailto      ->  dkcsc@yahoo.com
//  UCQ UIN     ->  50714029
//
//  Last Update 9.04.2001
//
//-----------------------------------------------------------------------------
#include <d3d8.h>
#pragma comment (lib, "d3d8.lib")

LPDIRECT3D8             p_d3d        = NULL; // our main d3d8 interface
LPDIRECT3DDEVICE8       p_d3d_Device = NULL; // our d3d8 device

//-----------------------------------------------------------------------------
#define APPNAME  
    "http://www.vvsu.ru/dkcsc === Mr.Snow D3D8 Tutorial_01 - Application Initialization"
#define APPTITLE
    "http://www.vvsu.ru/dkcsc === Mr.Snow D3D8 Tutorial_01 - Application Initialization"

#define _RELEASE_(p) { if(p) { (p)->Release(); (p)=NULL; };};
#define _DELETE_(p)  { if(p) { delete (p);     (p)=NULL; };};

#include <windows.h>
#include <time.h>

BOOL bActive = true;
char AppDir[1024];
HWND hWnd;
//-----------------------------------------------------------------------------



//-----------------------------------------------------------------------------
// Name: WindowProc ()
// Desc:
//-----------------------------------------------------------------------------
LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_ACTIVATE:
        bActive = LOWORD(wParam);
        break;

    case WM_DESTROY:
        PostQuitMessage (0);
        break;

    case WM_SETCURSOR:
        SetCursor (NULL);
        break;
    };
    return DefWindowProc(hWnd, message, wParam, lParam);
};

//-----------------------------------------------------------------------------
// Name: WindowInit ()
// Desc:
//-----------------------------------------------------------------------------
bool WindowInit (HINSTANCE hThisInst, int nCmdShow)
{
    WNDCLASS            wcl;
       
    wcl.hInstance       = hThisInst;
    wcl.lpszClassName   = APPNAME;
    wcl.lpfnWndProc     = WindowProc;
    wcl.style           = 0;

    wcl.hIcon           = LoadIcon (hThisInst, IDC_ICON);
    wcl.hCursor         = LoadCursor (hThisInst, IDC_ARROW);
    wcl.lpszMenuName    = NULL;

    wcl.cbClsExtra      = 0;
    wcl.cbWndExtra      = 0;
    wcl.hbrBackground   = (HBRUSH) GetStockObject (BLACK_BRUSH);

    RegisterClass (&wcl);

    hWnd = CreateWindowEx (
        WS_EX_TOPMOST,
        APPNAME,
        APPTITLE,
        WS_OVERLAPPEDWINDOW,
        0, 0,
        640,
        480,
        NULL,
        NULL,
        hThisInst,
        NULL);

    if(!hWnd) return false;

    return true;
};

//-----------------------------------------------------------------------------
// Name: AppInit()
// Desc: Initializes Aplication
//-----------------------------------------------------------------------------
bool AppInit (HINSTANCE hThisInst, int nCmdShow)
{
    p_d3d = Direct3DCreate8 (D3D_SDK_VERSION);
   
    D3DDISPLAYMODE d3ddm;
    p_d3d->GetAdapterDisplayMode (D3DADAPTER_DEFAULT, &d3ddm);
   
    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory (&d3dpp, sizeof(d3dpp));
    d3dpp.Windowed = true;
    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    d3dpp.BackBufferFormat = d3ddm.Format;

    p_d3d->CreateDevice (D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
            D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &p_d3d_Device);   

    srand (time(0)); // randomize timer

    if(!WindowInit (hThisInst, nCmdShow)) return false;
    ShowWindow (hWnd, nCmdShow);
    UpdateWindow (hWnd);

    return true;
};

//-----------------------------------------------------------------------------
// Name: DestroyDirect3D8 ()
// Desc:
//-----------------------------------------------------------------------------
void DestroyDirect3D8 (void)
{
    _RELEASE_ (p_d3d_Device);
    _RELEASE_ (p_d3d);
};


//-----------------------------------------------------------------------------
// Name: RenderScreen ()
// Desc: Draws the scene
//-----------------------------------------------------------------------------
void RenderScreen (void)
{
    static int c=0;
    p_d3d_Device->Clear (0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB (0, 0, c++), 1.0f, 0);
    p_d3d_Device->BeginScene ();
    p_d3d_Device->EndScene ();
    p_d3d_Device->Present (NULL, NULL, NULL, NULL);
};

//-----------------------------------------------------------------------------
// Name: WinMain ()
// Desc:
//-----------------------------------------------------------------------------
int APIENTRY WinMain (HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{
    MSG msg;
    if(!AppInit (hThisInst, nCmdShow)) return false;
   
    while (1)
    {
        if(PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE))
        {
            if(!GetMessage (&msg, NULL, 0, 0)) break;
            TranslateMessage (&msg);
            DispatchMessage (&msg);
        }
        else
            if(bActive) { RenderScreen (); };
    };
    DestroyDirect3D8 ();
    return 0;
};

//-----------------------------------------------------------------------------
// EOF
//-----------------------------------------------------------------------------
397
22 сентября 2008 года
SergPas
527 / / 03.02.2007
Цитата:
как собрать данную программу из командной строки не используя Microsoft Visual C++?


Извиняюсь, а как Вы собираетесь собрать программу, написанную на С++, из командной строки? :D Да уж, какие только вопросы не задавали... Вас чем-то не устраивает Microsoft Visual C++? Может быть его ценой? В этом случае используйте бесплатные компиляторы С++ (даже Microsoft пошла на уступки)... Удачи! И не задавайте больше глупых вопросов...

9
23 сентября 2008 года
Lerkin
3.0K / / 25.03.2003
Цитата: SergPas
Извиняюсь, а как Вы собираетесь собрать программу, написанную на С++, из командной строки? :D
[SIZE="1"][COLOR="Gray"]...(прoчее поскипано)...[/COLOR][/SIZE]


А в чем проблема со сборкой? [FONT="Courier New"]make [/FONT]никто не отменял, вроде...
Вопрос не глуп, а скорее неточен. Скорее "без использования Microsoft Visual Studio".

397
23 сентября 2008 года
SergPas
527 / / 03.02.2007
Цитата:
А в чем проблема со сборкой? [FONT=Courier New]make [/FONT]никто не отменял, вроде...


Согласен, но не без использования компилятора С++ для Win32...

29K
23 сентября 2008 года
Existor
20 / / 03.07.2008
Мне говормли суть make в том чтобы отслеживать изменённые файлы и выполнять действия над ними, что полезно при работе с большими пректами.
А сами инструкции в мейкфайле это и есть команды для командной строки.
Поэтому я так и написал, подразумевая что мне могут привести в пример
Makefile или *.bat файл.
397
23 сентября 2008 года
SergPas
527 / / 03.02.2007
А чем среда разработки Visual C++ не подходит? Она достаточно хорошо отслеживает изменения в крупном проекте, тем более, что в ней присутствуют инструменты, специально разработанные для работы над одним проектом в коллективе...
29K
24 сентября 2008 года
Existor
20 / / 03.07.2008
Прект у меня не большой. Просто у нас в унивеситете мы пользуемся MinGWStudio. А от MinGWStudio до ручной сборке недалеко, но вообше мне хочеться понять процесс сборки.
Я ведь с MASM начал знакомство с direct3d, но понял что это для меня пока слишком круто.
7.9K
24 сентября 2008 года
***Zebr@XXL***
47 / / 18.08.2005
Устанавливаешь компилятор от Microsoft, запускаешь командную строку и пишешь: cl [имя_файла]. И все.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог