#include <windows.h>
#include <d3d9.h>
LPDIRECT3D9 pDirect3D = NULL;
LPDIRECT3DDEVICE9 pDirect3DDevice = NULL;
LPDIRECT3DVERTEXBUFFER9 pBufferVershin = NULL;
struct CUSTOMVERTEX
{
FLOAT x, y, z, rhw;
DWORD color;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
HRESULT InitialDirect3D( HWND hwnd )
{
if( NULL == ( pDirect3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;
D3DDISPLAYMODE Display;
if( FAILED( pDirect3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &Display ) ) )
return E_FAIL;
D3DPRESENT_PARAMETERS Direct3DParametr;
ZeroMemory( &Direct3DParametr, sizeof(Direct3DParametr) );
Direct3DParametr.Windowed = TRUE;
Direct3DParametr.SwapEffect = D3DSWAPEFFECT_DISCARD;
Direct3DParametr.BackBufferFormat = Display.Format;
if( FAILED( pDirect3D -> CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd,
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&Direct3DParametr, &pDirect3DDevice ) ) )
{
return E_FAIL;
}
return S_OK;
}
HRESULT InitialBufferVershin(){
CUSTOMVERTEX Vershin[] =
{
{ 300.0f, 300.0f, 0.5f, 1.0f, 0x00000fff, }, // А
{ 150.0f, 300.0f, 0.5f, 1.0f, 0x00000fff, }, // В
{ 150.0f, 150.0f, 0.5f, 1.0f, 0x00000fff, }, // С
// x y z rhw цвет
{ 150.0f, 150.0f, 0.5f, 1.0f, 0x00000fff, }, // C
{ 300.0f, 150.0f, 0.5f, 1.0f, 0x00000fff, }, // D
{ 300.0f, 300.0f, 0.5f, 1.0f, 0x00000fff, }, // A
// x y z rhw цвет
};
if( FAILED( pDirect3DDevice->CreateVertexBuffer( 6*sizeof(CUSTOMVERTEX),
0, D3DFVF_CUSTOMVERTEX,
D3DPOOL_DEFAULT, &pBufferVershin, NULL ) ) )
{
return E_FAIL;
}
VOID* pBV;
if( FAILED( pBufferVershin->Lock( 0, sizeof(Vershin), (void**)&pBV, 0 ) ) )
return E_FAIL;
memcpy( pBV, Vershin, sizeof(Vershin) );
pBufferVershin->Unlock();
return S_OK;
}
VOID RenderingDirect3D()
{
if(pDirect3DDevice == NULL)
return;
pDirect3DDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255,255,0), 1.0f, 0 );
pDirect3DDevice->BeginScene();
pDirect3DDevice->SetStreamSource( 0, pBufferVershin, 0, sizeof(CUSTOMVERTEX) );
pDirect3DDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
pDirect3DDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 2 );
pDirect3DDevice->EndScene();
pDirect3DDevice->Present( NULL, NULL, NULL, NULL );
}
VOID DeleteDirect3D()
{
if( pBufferVershin != NULL)
pBufferVershin->Release();
if( pDirect3DDevice != NULL)
pDirect3DDevice->Release();
if( pDirect3D != NULL)
pDirect3D->Release();
}
LRESULT CALLBACK MainWinProc(HWND hwnd,
UINT msg,
WPARAM wparam,
LPARAM lparam)
{
switch(msg)
{
case WM_DESTROY:
{
DeleteDirect3D();
PostQuitMessage(0);
return(0);
}
}
return DefWindowProc(hwnd, msg, wparam, lparam);
}
int WINAPI WinMain( HINSTANCE hinstance,
HINSTANCE hprevinstance,
LPSTR lpcmdline,
int ncmdshow)
{
WNDCLASSEX windowsclass;
HWND hwnd;
MSG msg;
windowsclass.cbSize = sizeof(WNDCLASSEX);
windowsclass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
windowsclass.lpfnWndProc = 0;
windowsclass.cbClsExtra = 0;
windowsclass.cbWndExtra = 0;
windowsclass.hInstance = hinstance;
windowsclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
windowsclass.hCursor = LoadCursor(NULL, IDC_ARROW);
windowsclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH);
windowsclass.lpszMenuName = NULL;
windowsclass.lpszClassName = 0;
windowsclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if (!RegisterClassEx(&windowsclass))
return(0);
hwnd = CreateWindowEx(NULL,
0,
0,
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
0,0,
500,400,
NULL,
NULL,
hinstance,
NULL);
InitialDirect3D(hwnd);
InitialBufferVershin();
ShowWindow( hwnd, SW_SHOWDEFAULT );
UpdateWindow( hwnd );
ZeroMemory( &msg, sizeof(msg));
while( msg.message!=WM_QUIT)
{
if(PeekMessage( &msg, NULL,0,0,PM_REMOVE ))
{ TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
RenderingDirect3D();
};
}
ошибка при компиляции
Код:
ошибка:
------ Построение начато: проект: DD, Конфигурация: Debug Win32 ------
Построение начато 12.10.2010 23:43:30.
InitializeBuildStatus:
Обращение к "Debug\DD.unsuccessfulbuild".
ClCompile:
Для всех выходных данных обновления не требуется.
ManifestResourceCompile:
Для всех выходных данных обновления не требуется.
WindowsWSBazis.obj : error LNK2019: ссылка на неразрешенный внешний символ _Direct3DCreate9@4 в функции "long __cdecl InitialDirect3D(struct HWND__ *)" (?InitialDirect3D@@YAJPAUHWND__@@@Z)
c:\documents and settings\admin\мои документы\visual studio 2010\Projects\DD\Debug\DD.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
СБОЙ построения.
Затраченное время: 00:00:01.96
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
визуал студия 2010
заранее благодарен за помощь
прочитай - это: http://msdn.microsoft.com/ru-ru/library/cc656716.aspx
Цитата:
В поле Дополнительные зависимости добавьте файлы d3d9.lib и d3dx9.lib.
было выполнено?
поле Дополнительные зависимости где находится ? а то с сылка на 2008, а у меня стоит 2010 видимо меню чуточку различаются