첫 번째 D3D 프로그램
2825 단어 작업nullParametersincludewinapi
#include <d3d8.h>
LPDIRECT3D8 g_pD3D = NULL; // D3D
LPDIRECT3DDEVICE8 g_pd3dDevice = NULL; // D3D
// D3D
HRESULT InitD3D( HWND hWnd )
{
// D3D
if( NULL == ( g_pD3D = Direct3DCreate8( D3D_SDK_VERSION ) ) )
return E_FAIL;
//
D3DDISPLAYMODE d3ddm;
if( FAILED( g_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &d3ddm ) ) )
return E_FAIL;
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE; //
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; //
d3dpp.BackBufferFormat = d3ddm.Format; //
// D3D
// :
// : (HAL)
// :
// :
// :
// : D3D
if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp,
&g_pd3dDevice ) ) )
{
return E_FAIL;
}
return S_OK;
}
// D3D
VOID Cleanup()
{
if( g_pd3dDevice != NULL)
g_pd3dDevice->Release();
if( g_pD3D != NULL)
g_pD3D->Release();
}
//
VOID Render()
{
if( NULL == g_pd3dDevice )
return;
//
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
//
g_pd3dDevice->BeginScene();
//
//
g_pd3dDevice->EndScene();
//
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
//
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch( msg )
{
case WM_DESTROY: //
PostQuitMessage( 0 );
return 0;
case WM_PAINT: //
Render();
ValidateRect( hWnd, NULL );
return 0;
}
return DefWindowProc( hWnd, msg, wParam, lParam );
}
// WinMain
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
//
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
"D3D Tutorial", NULL };
RegisterClassEx( &wc );
//
HWND hWnd = CreateWindow( "D3D Tutorial", "D3D Tutorial 01: CreateDevice",
WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
GetDesktopWindow(), NULL, wc.hInstance, NULL );
// D3D
if( SUCCEEDED( InitD3D( hWnd ) ) )
{
//
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );
//
MSG msg;
while( GetMessage( &msg, NULL, 0, 0 ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}
//
Cleanup();
UnregisterClass( "D3D Tutorial", wc.hInstance );
return 0;
}
OK!아주 간단합니다. 사실 이것은 DX8SDK의 예 프로그램입니다. 위의 프로그램을 프로젝트에 넣고 컴파일하고 실행하면 이런 창을 볼 수 있습니다.
지금, 당신의 첫 번째 D3D 프로그램이 완성되었습니다. 비록 지금은 어떤 실제 작업도 하지 않았지만, 그것은 확실히 D3D 프로그램입니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
개인 FLEX 지식 라이브러리 작업 노트[size=large]1、 이 방법은 TileWindows 팝업 창에 있습니다. TitleWindows의 maxWidth와 maxHeight를 지정하지 않으면 최대 값이 화면 전체에 깔립니다. 페이지의minHeigh...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.