//-----------------------------------------------------------------------------
//
// 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
//-----------------------------------------------------------------------------
Сборка direct3d
Взял примерр создания окна direct3d с
Цитата:
как собрать данную программу из командной строки не используя Microsoft Visual C++?
Извиняюсь, а как Вы собираетесь собрать программу, написанную на С++, из командной строки? :D Да уж, какие только вопросы не задавали... Вас чем-то не устраивает Microsoft Visual C++? Может быть его ценой? В этом случае используйте бесплатные компиляторы С++ (даже Microsoft пошла на уступки)... Удачи! И не задавайте больше глупых вопросов...
Цитата: SergPas
Извиняюсь, а как Вы собираетесь собрать программу, написанную на С++, из командной строки? :D
[SIZE="1"][COLOR="Gray"]...(прoчее поскипано)...[/COLOR][/SIZE]
[SIZE="1"][COLOR="Gray"]...(прoчее поскипано)...[/COLOR][/SIZE]
А в чем проблема со сборкой? [FONT="Courier New"]make [/FONT]никто не отменял, вроде...
Вопрос не глуп, а скорее неточен. Скорее "без использования Microsoft Visual Studio".
Цитата:
А в чем проблема со сборкой? [FONT=Courier New]make [/FONT]никто не отменял, вроде...
Согласен, но не без использования компилятора С++ для Win32...
А сами инструкции в мейкфайле это и есть команды для командной строки.
Поэтому я так и написал, подразумевая что мне могут привести в пример
Makefile или *.bat файл.
А чем среда разработки Visual C++ не подходит? Она достаточно хорошо отслеживает изменения в крупном проекте, тем более, что в ней присутствуют инструменты, специально разработанные для работы над одним проектом в коллективе...
Я ведь с MASM начал знакомство с direct3d, но понял что это для меня пока слишком круто.
Устанавливаешь компилятор от Microsoft, запускаешь командную строку и пишешь: cl [имя_файла]. И все.