19,468
社区成员
发帖
与我相关
我的任务
分享
if(m_D3D == NULL)
{
m_D3D.Attach(Direct3DCreate9(D3D9b_SDK_VERSION));
}
WNDCLASSEX wc={sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0,0,GetModuleHandle(NULL),NULL,NULL,NULL,NULL,L"D3D",NULL};
RegisterClassEx(&wc);
m_window = CreateWindowA("D3D","sphere turtorial",WS_OVERLAPPEDWINDOW,100,100,400,400,GetDesktopWindow(),NULL,wc.hInstance,NULL);
if( m_D3DDev == NULL )
{
CreateDevice();
}
InitD3D(m_D3DDev);
HRESULT hr;
m_D3DDev = NULL;
D3DDISPLAYMODE dm;
hr = m_D3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &dm);
ZeroMemory(&pp, sizeof(pp));
pp.Windowed = TRUE;
pp.hDeviceWindow = m_window;
pp.SwapEffect = D3DSWAPEFFECT_COPY;
pp.BackBufferFormat = dm.Format;
FAIL_RET( m_D3D->CreateDevice( D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL,
m_window,
D3DCREATE_SOFTWARE_VERTEXPROCESSING |
D3DCREATE_MULTITHREADED,
&pp,
&m_D3DDev) );
m_renderTarget = NULL;
return m_D3DDev->GetRenderTarget( 0, & m_renderTarget );
FAIL_RET( m_D3DDev->SetTexture( 0, pRenderTexture));
FAIL_RET(hr = m_D3DDev->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE));
FAIL_RET(hr = m_D3DDev->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE));
FAIL_RET(hr = m_D3DDev->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE));
FAIL_RET(hr = m_D3DDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE));
FAIL_RET( m_D3DDev->SetStreamSource(0, g_pVB, 0, sizeof(CUSTOMVERTEXSPHERE) ) ); //set next source ( NEW )
FAIL_RET( m_D3DDev->SetFVF( D3DFVF_CUSTOM ) );
FAIL_RET( m_D3DDev->SetIndices(g_pIB));
FAIL_RET(hr = m_D3DDev->DrawIndexedPrimitive(D3DPT_TRIANGLESTRIP,0,0,(g_segments+1)*(1+g_rings),0,2*(g_segments)*g_rings+g_segments-2+g_rings));
FAIL_RET( m_D3DDev->SetTexture( 0, NULL));
FAIL_RET( m_D3DDev->EndScene());