이것은 안정적인 릴리스 코드가 아니므로 테스트 용으로 내 dev PC의 HWND에서 C++ 응용 프로그램으로 만든 창 D3D9 장치를 가져와야합니다. 옵션을로드합니다.Direct3D9 장치를 만드는 데 필요한 최소 코드
이전 D3D8 클래스에서 해킹하려고했지만 D3DERR_INVALIDCALL이 표시됩니다. 기본적으로
지금이 있습니다
HWND mHWnd = ...;
LPDIRECT3D9 mpD3D = Direct3DCreate9(D3D_SDK_VERSION);
D3DPRESENT_PARAMETERS md3dpp;
ZeroMemory(&md3dpp, sizeof(D3DPRESENT_PARAMETERS));
md3dpp.Windowed = true;
md3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
md3dpp.BackBufferCount = 1;
md3dpp.EnableAutoDepthStencil = 0;
md3dpp.hDeviceWindow = mHWnd;
md3dpp.BackBufferWidth = 0;
md3dpp.BackBufferHeight = 0;
md3dpp.FullScreen_RefreshRateInHz = 0;
md3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
md3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
md3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
md3dpp.MultiSampleQuality = 0;
LPDIRECT3DDEVICE9 mpD3DDevice=0;
HRESULT hr = mpD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,mHWnd,0,&md3dpp,&mpD3DDevice);
좀 D3DPRESENT_PARAMETERS
옵션을 비난 할 수 있습니다 그림 - 내가 Z-버퍼 또는 스텐실 또는 AA의 약 백 버퍼를 걱정하지 않는다, 오래된 일반 장치입니다 벌금.
일부 호환되지 않는 플래그를 복사하여 붙여 넣었습니까?
도현! 그게 뇌가없는 코드 붙여 넣기에서 오는 것입니다. 그것은 예상대로 작동합니다. –
@ 존 : Hehehe, 쉽게 놓칠 수 :) – Goz